{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Lesson 17 - Statistics Packages\n",
    "\n",
    "### Readings\n",
    "\n",
    "* [Handbook of Biological Statistics](http://www.biostathandbook.com)\n",
    "\n",
    "### Table of Contents\n",
    "\n",
    "* [Basic statistics](#basic)\n",
    "* [Regression analysis and outliers](#regression)\n",
    "* [Tests of independence](#independence)\n",
    "* [Analysis of variance](#anova)\n",
    "* [Machine learning](#machine)\n",
    "* [Microbiome analysis](#microbiome)\n",
    "\n",
    "In this lesson we'll consider some of the various statistics tools available in Python. Many packages provide statistical support: Pandas, Numpy, Scipy, and Scikit-learn.\n",
    "\n",
    "You will probably have to install `scikit-learn` (`sklearn`) and `outlier_utils` (`outliers`) before proceeding:\n",
    "\n",
    "```\n",
    "conda install scikit-learn\n",
    "pip install outlier_utils\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import required packages\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy\n",
    "from outliers import smirnov_grubbs as grubbs\n",
    "import sklearn\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set up pandas and seaborn environments\n",
    "pd.set_option('display.max_rows', 40)\n",
    "sns.set()\n",
    "sns.set_context('notebook')\n",
    "sns.set_palette('colorblind')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"basic\"></a>\n",
    "\n",
    "### Basic statistics\n",
    "\n",
    "#### Basic stats with Pandas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pandas provides several methods for computing descriptive statistics and other related operations on Series, DataFrame, and Panel objects. Most of these are aggregations (hence producing a lower-dimensional result) like `sum()`, `mean()`, and `quantile()`, but some of them, like `cumsum()` and `cumprod()`, produce an object of the same size. Generally speaking, these methods take an axis argument:\n",
    "\n",
    "* Series: no axis argument needed\n",
    "* DataFrame: “index” (axis=0, default), “columns” (axis=1)\n",
    "* Panel: “items” (axis=0), “major” (axis=1, default), “minor” (axis=2)\n",
    "\n",
    "Function | Description\n",
    "--------- | ----------\n",
    "count | Number of non-null observations\n",
    "sum | Sum of values\n",
    "mean | Mean of values\n",
    "mad | Mean absolute deviation\n",
    "median | Arithmetic median of values\n",
    "min | Minimum\n",
    "max | Maximum\n",
    "mode | Mode\n",
    "abs | Absolute Value\n",
    "prod | Product of values\n",
    "std | Bessel-corrected sample standard deviation\n",
    "var | Unbiased variance\n",
    "sem | Standard error of the mean\n",
    "skew | Sample skewness (3rd moment)\n",
    "kurt | Sample kurtosis (4th moment)\n",
    "quantile | Sample quantile (value at %)\n",
    "cumsum | Cumulative sum\n",
    "cumprod | Cumulative product\n",
    "cummax | Cumulative maximum\n",
    "cummin | Cumulative minimum"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Example: Monthly precipitation in La Jolla from 2008 to 2016"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>STATION</th>\n",
       "      <th>NAME</th>\n",
       "      <th>LATITUDE</th>\n",
       "      <th>LONGITUDE</th>\n",
       "      <th>ELEVATION</th>\n",
       "      <th>DATE</th>\n",
       "      <th>PRCP</th>\n",
       "      <th>PRCP_ATTRIBUTES</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2008-12-01</td>\n",
       "      <td>112.4</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2009-01-01</td>\n",
       "      <td>6.9</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2009-02-01</td>\n",
       "      <td>72.6</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2009-03-01</td>\n",
       "      <td>6.1</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2009-04-01</td>\n",
       "      <td>1.8</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       STATION                   NAME  LATITUDE  LONGITUDE  ELEVATION  \\\n",
       "0  US1CASD0015  LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "1  US1CASD0015  LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "2  US1CASD0015  LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "3  US1CASD0015  LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "4  US1CASD0015  LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "\n",
       "        DATE   PRCP PRCP_ATTRIBUTES  \n",
       "0 2008-12-01  112.4            ,,,N  \n",
       "1 2009-01-01    6.9            ,,,N  \n",
       "2 2009-02-01   72.6            ,,,N  \n",
       "3 2009-03-01    6.1            ,,,N  \n",
       "4 2009-04-01    1.8            ,,,N  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import data with dates parsed\n",
    "df = pd.read_csv('../data/la_jolla_precip_monthly.csv', parse_dates=['DATE'])\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(211, 8)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we can see that the dataframe has 211 rows...\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-10-01    3\n",
       "2012-11-01    3\n",
       "2012-01-01    3\n",
       "2009-11-01    3\n",
       "2013-02-01    3\n",
       "2013-11-01    3\n",
       "2013-06-01    3\n",
       "2013-05-01    3\n",
       "2010-11-01    3\n",
       "2011-02-01    3\n",
       "2011-01-01    3\n",
       "2013-03-01    3\n",
       "2013-04-01    3\n",
       "2011-11-01    3\n",
       "2010-03-01    3\n",
       "2010-04-01    3\n",
       "2014-01-01    3\n",
       "2014-03-01    3\n",
       "2014-04-01    3\n",
       "2010-02-01    3\n",
       "             ..\n",
       "2014-10-01    2\n",
       "2014-11-01    2\n",
       "2011-10-01    2\n",
       "2016-02-01    2\n",
       "2015-10-01    2\n",
       "2015-11-01    2\n",
       "2013-01-01    2\n",
       "2014-08-01    2\n",
       "2016-09-01    1\n",
       "2016-08-01    1\n",
       "2009-12-01    1\n",
       "2016-10-01    1\n",
       "2010-10-01    1\n",
       "2016-06-01    1\n",
       "2016-05-01    1\n",
       "2016-04-01    1\n",
       "2008-12-01    1\n",
       "2009-01-01    1\n",
       "2016-07-01    1\n",
       "2009-02-01    1\n",
       "Name: DATE, Length: 95, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ...but 95 unique months, and many months have multiple values\n",
    "df.DATE.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>STATION</th>\n",
       "      <th>NAME</th>\n",
       "      <th>LATITUDE</th>\n",
       "      <th>LONGITUDE</th>\n",
       "      <th>ELEVATION</th>\n",
       "      <th>DATE</th>\n",
       "      <th>PRCP</th>\n",
       "      <th>PRCP_ATTRIBUTES</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>US1CASD0015</td>\n",
       "      <td>LA JOLLA 2.5SE, CA US</td>\n",
       "      <td>32.8254</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.8</td>\n",
       "      <td>2013-10-01</td>\n",
       "      <td>1.8</td>\n",
       "      <td>4,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>112</th>\n",
       "      <td>US1CASD0037</td>\n",
       "      <td>LA JOLLA 2.2 NE, CA US</td>\n",
       "      <td>32.8705</td>\n",
       "      <td>-117.2477</td>\n",
       "      <td>113.1</td>\n",
       "      <td>2013-10-01</td>\n",
       "      <td>12.5</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>174</th>\n",
       "      <td>US1CASD0030</td>\n",
       "      <td>LA JOLLA 2.1 SE, CA US</td>\n",
       "      <td>32.8257</td>\n",
       "      <td>-117.2501</td>\n",
       "      <td>149.7</td>\n",
       "      <td>2013-10-01</td>\n",
       "      <td>9.2</td>\n",
       "      <td>,,,N</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         STATION                    NAME  LATITUDE  LONGITUDE  ELEVATION  \\\n",
       "56   US1CASD0015   LA JOLLA 2.5SE, CA US   32.8254  -117.2397      154.8   \n",
       "112  US1CASD0037  LA JOLLA 2.2 NE, CA US   32.8705  -117.2477      113.1   \n",
       "174  US1CASD0030  LA JOLLA 2.1 SE, CA US   32.8257  -117.2501      149.7   \n",
       "\n",
       "          DATE  PRCP PRCP_ATTRIBUTES  \n",
       "56  2013-10-01   1.8           4,,,N  \n",
       "112 2013-10-01  12.5            ,,,N  \n",
       "174 2013-10-01   9.2            ,,,N  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# for example, 10/1/13 has three different PRCP values\n",
    "df[df.DATE == '10/1/13']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# so let's calculate average precipitation per month, then create columns for month and year, and reset the index\n",
    "df = df.groupby('DATE').mean()\n",
    "df['MONTH'] = [x.month for x in df.index]\n",
    "df['YEAR'] = [x.year for x in df.index]\n",
    "df.reset_index(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DATE</th>\n",
       "      <th>LATITUDE</th>\n",
       "      <th>LONGITUDE</th>\n",
       "      <th>ELEVATION</th>\n",
       "      <th>PRCP</th>\n",
       "      <th>MONTH</th>\n",
       "      <th>YEAR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2008-12-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>112.40</td>\n",
       "      <td>12</td>\n",
       "      <td>2008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2009-01-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>6.90</td>\n",
       "      <td>1</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2009-02-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>72.60</td>\n",
       "      <td>2</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2009-03-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>6.10</td>\n",
       "      <td>3</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2009-04-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>2.05</td>\n",
       "      <td>4</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2009-05-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>4.85</td>\n",
       "      <td>5</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2009-06-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>3.85</td>\n",
       "      <td>6</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2009-07-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>0.00</td>\n",
       "      <td>7</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2009-08-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>0.40</td>\n",
       "      <td>8</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2009-09-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>0.55</td>\n",
       "      <td>9</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        DATE  LATITUDE  LONGITUDE  ELEVATION    PRCP  MONTH  YEAR\n",
       "0 2008-12-01  32.82540  -117.2397     154.80  112.40     12  2008\n",
       "1 2009-01-01  32.82540  -117.2397     154.80    6.90      1  2009\n",
       "2 2009-02-01  32.82540  -117.2397     154.80   72.60      2  2009\n",
       "3 2009-03-01  32.82555  -117.2449     152.25    6.10      3  2009\n",
       "4 2009-04-01  32.82555  -117.2449     152.25    2.05      4  2009\n",
       "5 2009-05-01  32.82555  -117.2449     152.25    4.85      5  2009\n",
       "6 2009-06-01  32.82555  -117.2449     152.25    3.85      6  2009\n",
       "7 2009-07-01  32.82555  -117.2449     152.25    0.00      7  2009\n",
       "8 2009-08-01  32.82555  -117.2449     152.25    0.40      8  2009\n",
       "9 2009-09-01  32.82555  -117.2449     152.25    0.55      9  2009"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# examine the resulting dataframe\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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5R6ts7MTnZ2dxXhqCoVCoRQA85jEFAqFQikZVPwpFAqlCqHiT6FQKFWI6eqy2DSzRsv9XIXErHEBNLZcobHlBo0texLjyjXOgm/yolAoFIr5obYPhUKhVCFU/CkUCqUKoeJPoVAoVQgVfwqFQqlCqPhTKBRKFULFn0KhUKoQKv4UCoVShVDxp1AolCqEij+FQqFUIceU+G/duhVr167F2rVrcd999wHQBsZ3dnZi9erVePDBB/Wf/eSTT3DFFVdgzZo1+MEPfgBJkgAAe/fuxZVXXonOzk5s2rQJHo+npHERvv/97+Ppp5/Wvx8YGMC1116LSy+9FF//+tfh9/vzjqtQsRF+9rOf4V/+5V8KElehYtu9ezeuuuoqrF+/HjfccAP6+/tNE9uuXbtwxRVXoLOzE1/72tcwNTVlmtgIf/vb33DyyScXJK5CxfbMM8/gggsuwPr167F+/fqUv1Ou2EZGRrBx40Zcfvnl2LBhA/r6+kwR29jYmH681q9fj0suuQRnnHHGzC+qHiO888476pe//GU1HA6rkUhEvf7669Xnn39eveiii9SjR4+qoiiqN998s/rmm2+qqqqqa9euVT/88ENVVVX1jjvuUB977DFVURT1oosuUt99911VVVX1D3/4g7pp06aSxjU0NKRu2rRJPfXUU9Xf/e53+vNs3LhRfeGFF1RVVdWtW7eq9913X15xFTK26elp9Y477lBPPfVU9aGHHso7rkLGdvHFF6uffPKJqqqq+tRTT6lf+9rXTBPb5z//efXgwYOqqqrq/fffr/7kJz8xTWyqqqqBQEDdsGGDunTp0rzjKmRsd999t/r8888XJKZCx3bDDTeojz/+uKqqqvr444+rt956q2liI8iyrH7lK19Rn3vuuRlf95jJ/N1uN26//XYIggCLxYJFixahu7sbCxYswLx588DzPDo7O7Fjxw709/cjFArh9NNPBwBcccUV2LFjByYmJhAKhbBixQoAwMUXX4y3334bkUikJHEBwPPPP4/Pfe5z+MIXvqA/hyiKeP/997FmzZq4ePOlELEBwGuvvYaFCxfipptuyjumQsYWiURw6623Yvny5QCAZcuWYXBw0BSxAcCLL76IxYsXQxRFDA8Po7a21jSxAcC9996LG264Ie+YCh3bxx9/jGeeeQadnZ347ne/W5A7pkLENj4+jv3792PDhg0AgCuvvBK33XabKWIz8rvf/Q52u33WgVrHjPgvWbJEF/Pu7m689NJLYBgGbrdb/5mWlhYMDw9jZGQk7nG3243h4WE0NDTA4XDg7bffBgD84Q9/gCiKmJiYKElcAHDLLbfg6quvjnuOiYkJOJ1O8DwfF2++FCI2ALj88suxceNGcFzhBokXIjZBELB+/XoAgKIo2Lp1Kz7/+c+bIjYAsFgs6OrqwkUXXYT33nsPa9euNU1sr732GkKhEC699NK8Yyp0bG63G9/4xjfw3HPPYc6cObj77rtNEVtvby/a29tx77334sorr8R3vvMdWCwWU8RGkGUZv/zlL/GP//iPs77uMSP+hIMHD+Lmm2/G97//fcybNw8ME2tnqqoqGIaBoigpH2cYBg899BAeeeQRXH755fB6vaivry/IG5hJXP+/vTsGSWeBAzj+7Z8VlEMEmRGUQ+DgEJRDkxERRIThEARBNAhB0RAVSFTaEAhJCREOFQW1BgpRi1EhtAkVITRFU4MNgUZdaL0hEv685//1Xqde+Ptsp4f35dSf3J1w2fzT839aP59tuaZG2+vrK9PT06RSKUZHRzXVZjabOT8/Z2xsjMnJSU20xeNxAoEA8/PzqvWo1Qawvr5OW1sbJSUlOJ1OIpGIJtpSqRSxWIz29nb29/fp6urC5XJpou1TJBLBZDJhNpv/dd0fNfyj0SgjIyNMTU3hcDgwGo2/XbCNx+MYDIa/Pf7w8IDBYABAp9Oxu7tLMBjEbrfz9vZGdXV1XrqyqampIZFIkE6nv7R+PttySY22p6cnnE4nqVSKQCCgyg+5Gm2KohAOhzPLdrudm5sbTbSdnp7y+PjI0NBQ5sipv7+fZDJZ8LZEIsHOzk5m+f39XbUjzu+21dbWUlVVRWdnJwB9fX1cXV1pou1TOBymt7f3S9v8McP//v6e8fFxfD5f5vC5paWF29tb7u7uSKfTHBwcYLPZaGhooKKigmg0CkAoFMJmswEwOzubecO2t7fp6enh16//vxv+S1c2ZWVlWK1WDg8PAQgGg39cP59tuaJW28zMDE1NTfj9fsrLyzXTptPpWFxc5Pr6GoCjoyNaW1s10TYwMEA4HCYUChEKhYCP74hery94W2VlJZubm1xeXgKwt7dHd3f3t7rUamtsbMRoNHJ2dgbAyckJFotFE22fLi4usFqtX9qu5u7klc3W1haKouD1ejOPDQ4O4vV6mZiYQFEUOjo6MucwfT4fc3NzJJNJLBYLw8PDAHg8HtxuN8/Pz5jNZpaWlvLalY3b7cblchEIBKivr2dlZeVbXWq25YIabbFYjOPjY5qbm3E4HMDHudGNjY2Ct5WWlrK6usrCwgLpdJq6urpvf9bUassVtfab3+/H4/Hw8vKCyWTK/PWx0G0Aa2truN1ulpeX0ev1v71eodvg47qE0Wj80nblTl5CCFGEfsxpHyGEEOqR4S+EEEVIhr8QQhQhGf5CCFGEZPgLIUQRkuEvhBBFSIa/EEIUIRn+QghRhP4CA9jjGR6ocEgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# explore the data using a plot\n",
    "plt.plot(df.DATE, df.PRCP);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/H6//vtq34ff/e538Pv92LRpEyYmJhAKhcAwTMIeDA8PV/UeNDc3Y9WqVWhsbAQAXHbZZdixYwc4jtP/ptqPg927d2PVqlVoamoCoEo8jz76qKWOg3w55T3/Cy+8EHv27MHo6CjC4TBefvllrF69utLLKin9/f346le/igceeAAbNmwAAKxYsQLHjx/HiRMnIEkSXnjhhareh8ceewwvvPACnn32Wdx+++349Kc/je9///twOBzYt28fADULpJr34NJLL8Xu3bsxOTkJSZLw+uuv4/LLL7fUcbBs2TJ0dnYiFApBURTs2rULn/zkJy11HOTLKe/5z5o1C1u2bMH1118PQRCwefNmLF++vNLLKimPPvoootEo7r//fv2xq6++Gvfffz9uu+02RKNRXHLJJbj88ssruMrK8MADD+Duu+9GIBDAmWeeieuvv77SSyoZK1aswM0334wvfvGLEAQBF110Ea655hosXLjQMsfBxRdfjPfffx9XXnklbDYbzjrrLNxyyy1Ys2aNZY6DfKGTvCgUCsWCnPKyD4VCoVByhxp/CoVCsSDU+FMoFIoFocafQqFQLAg1/hQKhWJBqPGnUCgUC0KNP4VCoVgQavwpFArFgvx/mSr+gnLVaqUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# make sure our index is sequential\n",
    "plt.plot(df.index, df.PRCP);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LATITUDE</th>\n",
       "      <th>LONGITUDE</th>\n",
       "      <th>ELEVATION</th>\n",
       "      <th>PRCP</th>\n",
       "      <th>MONTH</th>\n",
       "      <th>YEAR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>95.000000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>95.000000</td>\n",
       "      <td>95.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>32.830764</td>\n",
       "      <td>-117.245553</td>\n",
       "      <td>147.555789</td>\n",
       "      <td>20.878070</td>\n",
       "      <td>6.452632</td>\n",
       "      <td>2012.378947</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.007165</td>\n",
       "      <td>0.001824</td>\n",
       "      <td>6.192505</td>\n",
       "      <td>30.779847</td>\n",
       "      <td>3.457242</td>\n",
       "      <td>2.302538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>32.825400</td>\n",
       "      <td>-117.250100</td>\n",
       "      <td>139.200000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2008.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>32.825550</td>\n",
       "      <td>-117.245833</td>\n",
       "      <td>139.200000</td>\n",
       "      <td>0.850000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>2010.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>32.825550</td>\n",
       "      <td>-117.244900</td>\n",
       "      <td>152.250000</td>\n",
       "      <td>8.750000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>2012.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>32.840533</td>\n",
       "      <td>-117.244900</td>\n",
       "      <td>152.250000</td>\n",
       "      <td>27.116667</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>2014.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>32.840533</td>\n",
       "      <td>-117.239700</td>\n",
       "      <td>154.800000</td>\n",
       "      <td>166.200000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>2016.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        LATITUDE   LONGITUDE   ELEVATION        PRCP      MONTH         YEAR\n",
       "count  95.000000   95.000000   95.000000   95.000000  95.000000    95.000000\n",
       "mean   32.830764 -117.245553  147.555789   20.878070   6.452632  2012.378947\n",
       "std     0.007165    0.001824    6.192505   30.779847   3.457242     2.302538\n",
       "min    32.825400 -117.250100  139.200000    0.000000   1.000000  2008.000000\n",
       "25%    32.825550 -117.245833  139.200000    0.850000   3.500000  2010.000000\n",
       "50%    32.825550 -117.244900  152.250000    8.750000   6.000000  2012.000000\n",
       "75%    32.840533 -117.244900  152.250000   27.116667   9.000000  2014.000000\n",
       "max    32.840533 -117.239700  154.800000  166.200000  12.000000  2016.000000"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# describe gives basic statistics\n",
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20.878070175438598"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# mean\n",
    "df.PRCP.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30.779846675482016"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# std\n",
    "df.PRCP.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.8500000000000001, 8.75, 27.116666666666667)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# quantile\n",
    "df.PRCP.quantile(0.25), df.PRCP.quantile(0.5), df.PRCP.quantile(0.75)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 7)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# min and idxmin\n",
    "df.PRCP.min(), df.PRCP.idxmin()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(166.2, 166.0, 24)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# max (with rounding) and idxmax\n",
    "df.PRCP.max(), df.PRCP.max().round(), df.PRCP.idxmax()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      112.400000\n",
       "1      119.300000\n",
       "2      191.900000\n",
       "3      198.000000\n",
       "4      200.050000\n",
       "5      204.900000\n",
       "6      208.750000\n",
       "7      208.750000\n",
       "8      209.150000\n",
       "9      209.700000\n",
       "10     210.200000\n",
       "11     216.333333\n",
       "12     296.333333\n",
       "13     436.333333\n",
       "14     508.033333\n",
       "15     523.000000\n",
       "16     570.066667\n",
       "17     570.966667\n",
       "18     572.416667\n",
       "19     574.666667\n",
       "         ...     \n",
       "75    1625.166667\n",
       "76    1628.466667\n",
       "77    1659.316667\n",
       "78    1660.116667\n",
       "79    1698.166667\n",
       "80    1698.666667\n",
       "81    1727.266667\n",
       "82    1750.966667\n",
       "83    1799.216667\n",
       "84    1822.066667\n",
       "85    1889.566667\n",
       "86    1900.916667\n",
       "87    1926.016667\n",
       "88    1940.016667\n",
       "89    1966.216667\n",
       "90    1966.816667\n",
       "91    1966.816667\n",
       "92    1967.616667\n",
       "93    1979.516667\n",
       "94    1983.416667\n",
       "Name: PRCP, Length: 95, dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# cumsum\n",
    "df.PRCP.cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0      16\n",
       "1.0      12\n",
       "2.0       5\n",
       "9.0       4\n",
       "7.0       3\n",
       "25.0      3\n",
       "5.0       3\n",
       "4.0       3\n",
       "12.0      3\n",
       "11.0      2\n",
       "24.0      2\n",
       "29.0      2\n",
       "36.0      2\n",
       "31.0      2\n",
       "27.0      2\n",
       "8.0       2\n",
       "23.0      2\n",
       "10.0      2\n",
       "6.0       2\n",
       "80.0      1\n",
       "         ..\n",
       "72.0      1\n",
       "15.0      1\n",
       "73.0      1\n",
       "47.0      1\n",
       "26.0      1\n",
       "19.0      1\n",
       "166.0     1\n",
       "46.0      1\n",
       "14.0      1\n",
       "67.0      1\n",
       "40.0      1\n",
       "87.0      1\n",
       "28.0      1\n",
       "86.0      1\n",
       "18.0      1\n",
       "3.0       1\n",
       "38.0      1\n",
       "48.0      1\n",
       "68.0      1\n",
       "112.0     1\n",
       "Name: PRCP, Length: 42, dtype: int64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# value_counts\n",
    "df.round().PRCP.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "152.25    50\n",
       "139.20    33\n",
       "149.70     9\n",
       "154.80     3\n",
       "Name: ELEVATION, dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.ELEVATION.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"regression\"></a>\n",
    "\n",
    "### Regression analysis\n",
    "\n",
    "#### Regression with Seaborn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/luke/miniconda3/envs/python3/lib/python3.7/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a16638400>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# regression with order=1 (linear)\n",
    "sns.regplot(x='MONTH', y='PRCP', data=df, order=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a1670bd30>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# regression with order=2 (parabolic)\n",
    "sns.regplot(x='MONTH', y='PRCP', data=df, order=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Seaborn is handy to generate plots, but it doesn't provide easy access to the coefficients. For more control, we can use Numpy, Scipy, and other statistics packages."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Regression with Numpy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### np.polyfit - least squares polynomial fit (1st order)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.6647546282416419, 16.58865346899516)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# linear (1st order) with np.polyfit\n",
    "m, b = np.polyfit(df.MONTH, df.PRCP, 1)\n",
    "m, b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot scatter and polyfit\n",
    "plt.scatter(df.MONTH, df.PRCP)\n",
    "plt.plot(df.MONTH, m*df.MONTH + b, '-');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sort DataFrame by month, then re-plot\n",
    "df.sort_values('MONTH', inplace=True)\n",
    "plt.scatter(df.MONTH, df.PRCP)\n",
    "plt.plot(df.MONTH, m*df.MONTH + b, '-');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### np.polyfit - least squares polynomial fit (2nd order)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# parabolic (2nd order) with np.polyfit\n",
    "p = np.polyfit(df.MONTH, df.PRCP, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1.68178223, -21.14169112,  67.38422486])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# values of p are in decending order\n",
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.        ,  1.2244898 ,  1.44897959,  1.67346939,  1.89795918,\n",
       "        2.12244898,  2.34693878,  2.57142857,  2.79591837,  3.02040816,\n",
       "        3.24489796,  3.46938776,  3.69387755,  3.91836735,  4.14285714,\n",
       "        4.36734694,  4.59183673,  4.81632653,  5.04081633,  5.26530612,\n",
       "        5.48979592,  5.71428571,  5.93877551,  6.16326531,  6.3877551 ,\n",
       "        6.6122449 ,  6.83673469,  7.06122449,  7.28571429,  7.51020408,\n",
       "        7.73469388,  7.95918367,  8.18367347,  8.40816327,  8.63265306,\n",
       "        8.85714286,  9.08163265,  9.30612245,  9.53061224,  9.75510204,\n",
       "        9.97959184, 10.20408163, 10.42857143, 10.65306122, 10.87755102,\n",
       "       11.10204082, 11.32653061, 11.55102041, 11.7755102 , 12.        ])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create a finely spaced x array\n",
    "x1 = np.linspace(1,12)\n",
    "x1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([47.92431598, 44.01806249, 40.28131809, 36.71408276, 33.31635652,\n",
       "       30.08813935, 27.02943126, 24.14023226, 21.42054233, 18.87036149,\n",
       "       16.48968972, 14.27852703, 12.23687342, 10.36472889,  8.66209345,\n",
       "        7.12896708,  5.76534979,  4.57124158,  3.54664245,  2.6915524 ,\n",
       "        2.00597143,  1.48989954,  1.14333673,  0.966283  ,  0.95873835,\n",
       "        1.12070278,  1.45217628,  1.95315887,  2.62365054,  3.46365129,\n",
       "        4.47316111,  5.65218002,  7.00070801,  8.51874507, 10.20629122,\n",
       "       12.06334644, 14.08991075, 16.28598413, 18.6515666 , 21.18665814,\n",
       "       23.89125877, 26.76536847, 29.80898725, 33.02211512, 36.40475206,\n",
       "       39.95689808, 43.67855318, 47.56971737, 51.63039063, 55.86057297])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the y array for the fit curve \n",
    "y1 = np.polyval(p, x1)\n",
    "y1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot data then curve\n",
    "plt.scatter(df.MONTH, df.PRCP)\n",
    "plt.plot(x1, y1, '-');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 3rd order with np.polyfit\n",
    "p = np.polyfit(df.MONTH, df.PRCP, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# generate curve with polyval\n",
    "y1 = np.polyval(p, x1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot data then curve\n",
    "plt.scatter(df.MONTH, df.PRCP)\n",
    "plt.plot(x1, y1, '-');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Fitting time series to a sinusoidal wave\n",
    "\n",
    "First, a refresher on sine waves:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# initialize sine wave parameters\n",
    "period = 4*np.pi\n",
    "freq = (2*np.pi)/period\n",
    "phase = 0\n",
    "amplitude = .5\n",
    "offset = 1\n",
    "# generate x and y arrays for sine wave\n",
    "x1 = np.linspace(0, 24, num=2000)\n",
    "y1 = np.sin(x1 * freq + phase) * amplitude + offset\n",
    "# plot sine wave\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x1, y1)\n",
    "ax.set_xticks([2*np.pi, 4*np.pi, 6*np.pi])\n",
    "ax.set_xticklabels(['2$\\pi$', '4$\\pi$', '6$\\pi$']);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fit a sine wave to the monthly precipitaiton data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DATE</th>\n",
       "      <th>LATITUDE</th>\n",
       "      <th>LONGITUDE</th>\n",
       "      <th>ELEVATION</th>\n",
       "      <th>PRCP</th>\n",
       "      <th>MONTH</th>\n",
       "      <th>YEAR</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2008-12-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>112.40</td>\n",
       "      <td>12</td>\n",
       "      <td>2008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2009-01-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>6.90</td>\n",
       "      <td>1</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2009-02-01</td>\n",
       "      <td>32.82540</td>\n",
       "      <td>-117.2397</td>\n",
       "      <td>154.80</td>\n",
       "      <td>72.60</td>\n",
       "      <td>2</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2009-03-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>6.10</td>\n",
       "      <td>3</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2009-04-01</td>\n",
       "      <td>32.82555</td>\n",
       "      <td>-117.2449</td>\n",
       "      <td>152.25</td>\n",
       "      <td>2.05</td>\n",
       "      <td>4</td>\n",
       "      <td>2009</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        DATE  LATITUDE  LONGITUDE  ELEVATION    PRCP  MONTH  YEAR\n",
       "0 2008-12-01  32.82540  -117.2397     154.80  112.40     12  2008\n",
       "1 2009-01-01  32.82540  -117.2397     154.80    6.90      1  2009\n",
       "2 2009-02-01  32.82540  -117.2397     154.80   72.60      2  2009\n",
       "3 2009-03-01  32.82555  -117.2449     152.25    6.10      3  2009\n",
       "4 2009-04-01  32.82555  -117.2449     152.25    2.05      4  2009"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we are going to use the numerical index for our \"t\" variable;\n",
    "# make sure our index is sequential (December 2008 is zero)\n",
    "df.sort_index(inplace=True)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(df.index, df.PRCP)\n",
    "plt.xticks(np.arange(0, df.index.max(), 12));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# store our values as new variables\n",
    "t = df.index\n",
    "data = df.PRCP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# guess the sine wave properties\n",
    "guess_period = 12\n",
    "guess_freq = (2*np.pi)/guess_period\n",
    "guess_phase = 0\n",
    "guess_amplitude = 10\n",
    "guess_offset = 10\n",
    "\n",
    "p0 = [guess_freq, guess_amplitude, guess_phase, guess_offset]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# create a function that returns the curve to fit our data to\n",
    "def my_sin(x, freq, amplitude, phase, offset):\n",
    "    return np.sin(x * freq + phase) * amplitude + offset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# now fit the curve to the data using scipy.optimize.curve_fit\n",
    "fit = scipy.optimize.curve_fit(my_sin, t, data, p0=p0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.5235987755982988, 10, 0, 10]"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# compare the guessed values...\n",
    "p0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0.52269435, 23.36580661,  1.22206448, 21.05228284]),\n",
       " array([[ 3.60000571e-05,  1.55959946e-04, -1.72175447e-03,\n",
       "         -9.64418604e-04],\n",
       "        [ 1.55959946e-04,  1.45447293e+01, -7.75633619e-05,\n",
       "          1.06005333e-01],\n",
       "        [-1.72175447e-03, -7.75633619e-05,  1.09151942e-01,\n",
       "          5.22505748e-02],\n",
       "        [-9.64418604e-04,  1.06005333e-01,  5.22505748e-02,\n",
       "          7.32071235e+00]]))"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ...with the fit values\n",
    "fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# we'll use this to plot our first estimate. This might already be good enough for you\n",
    "data_first_guess = my_sin(t, *p0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# recreate the fitted curve using the optimized parameters\n",
    "data_fit = my_sin(t, *fit[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(data, '.')\n",
    "plt.plot(data_fit, label='after fitting')\n",
    "plt.plot(data_first_guess, label='first guess')\n",
    "plt.xticks(np.arange(0, df.index.max(), 12))\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Regression with Scipy\n",
    "\n",
    "##### Example: Moons of the Solar System\n",
    "\n",
    "I retrieved moon and planet data from Wikipedia for 23 of the largest moons (there are dozens more!) and saved them as Excel files."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>moon_name</th>\n",
       "      <th>planet_name</th>\n",
       "      <th>moon_planet_distance_km</th>\n",
       "      <th>moon_diameter_km</th>\n",
       "      <th>planet_diameter_km</th>\n",
       "      <th>planet_sun_distance_km</th>\n",
       "      <th>planet_sun_distance_au</th>\n",
       "      <th>moon_volume_km3</th>\n",
       "      <th>planet_volume_km3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Moon</td>\n",
       "      <td>Earth</td>\n",
       "      <td>384000</td>\n",
       "      <td>3476</td>\n",
       "      <td>12742</td>\n",
       "      <td>1.495979e+08</td>\n",
       "      <td>1.000</td>\n",
       "      <td>2.199064e+10</td>\n",
       "      <td>1.083207e+12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Deimos</td>\n",
       "      <td>Mars</td>\n",
       "      <td>9270</td>\n",
       "      <td>20</td>\n",
       "      <td>6779</td>\n",
       "      <td>2.281368e+08</td>\n",
       "      <td>1.525</td>\n",
       "      <td>4.188790e+03</td>\n",
       "      <td>1.631156e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Phobos</td>\n",
       "      <td>Mars</td>\n",
       "      <td>23460</td>\n",
       "      <td>8</td>\n",
       "      <td>6779</td>\n",
       "      <td>2.281368e+08</td>\n",
       "      <td>1.525</td>\n",
       "      <td>2.680826e+02</td>\n",
       "      <td>1.631156e+11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Callisto</td>\n",
       "      <td>Jupiter</td>\n",
       "      <td>1883000</td>\n",
       "      <td>4800</td>\n",
       "      <td>139822</td>\n",
       "      <td>7.786569e+08</td>\n",
       "      <td>5.205</td>\n",
       "      <td>5.790584e+10</td>\n",
       "      <td>1.431282e+15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Europa</td>\n",
       "      <td>Jupiter</td>\n",
       "      <td>670900</td>\n",
       "      <td>3126</td>\n",
       "      <td>139822</td>\n",
       "      <td>7.786569e+08</td>\n",
       "      <td>5.205</td>\n",
       "      <td>1.599431e+10</td>\n",
       "      <td>1.431282e+15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Ganymede</td>\n",
       "      <td>Jupiter</td>\n",
       "      <td>1070000</td>\n",
       "      <td>5276</td>\n",
       "      <td>139822</td>\n",
       "      <td>7.786569e+08</td>\n",
       "      <td>5.205</td>\n",
       "      <td>7.689763e+10</td>\n",
       "      <td>1.431282e+15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Io</td>\n",
       "      <td>Jupiter</td>\n",
       "      <td>421600</td>\n",
       "      <td>3629</td>\n",
       "      <td>139822</td>\n",
       "      <td>7.786569e+08</td>\n",
       "      <td>5.205</td>\n",
       "      <td>2.502416e+10</td>\n",
       "      <td>1.431282e+15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Dione</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>377400</td>\n",
       "      <td>1120</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>7.356186e+08</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Enceladus</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>238020</td>\n",
       "      <td>498</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>6.466759e+07</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Hyperion</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>1481000</td>\n",
       "      <td>226</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>6.043993e+06</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Iapetus</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>3561300</td>\n",
       "      <td>1436</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>1.550465e+09</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Mimas</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>185520</td>\n",
       "      <td>398</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>3.301018e+07</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Phoebe</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>12952000</td>\n",
       "      <td>220</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>5.575280e+06</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Rhea</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>527040</td>\n",
       "      <td>1528</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>1.867965e+09</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Tethys</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>294660</td>\n",
       "      <td>1060</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>6.236145e+08</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Titan</td>\n",
       "      <td>Saturn</td>\n",
       "      <td>1221850</td>\n",
       "      <td>5150</td>\n",
       "      <td>116464</td>\n",
       "      <td>1.427912e+09</td>\n",
       "      <td>9.545</td>\n",
       "      <td>7.151881e+10</td>\n",
       "      <td>8.271299e+14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Ariel</td>\n",
       "      <td>Uranus</td>\n",
       "      <td>191240</td>\n",
       "      <td>1160</td>\n",
       "      <td>50724</td>\n",
       "      <td>2.872279e+09</td>\n",
       "      <td>19.200</td>\n",
       "      <td>8.172832e+08</td>\n",
       "      <td>6.833436e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Miranda</td>\n",
       "      <td>Uranus</td>\n",
       "      <td>129780</td>\n",
       "      <td>472</td>\n",
       "      <td>50724</td>\n",
       "      <td>2.872279e+09</td>\n",
       "      <td>19.200</td>\n",
       "      <td>5.505853e+07</td>\n",
       "      <td>6.833436e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Oberon</td>\n",
       "      <td>Uranus</td>\n",
       "      <td>582600</td>\n",
       "      <td>1526</td>\n",
       "      <td>50724</td>\n",
       "      <td>2.872279e+09</td>\n",
       "      <td>19.200</td>\n",
       "      <td>1.860639e+09</td>\n",
       "      <td>6.833436e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Titania</td>\n",
       "      <td>Uranus</td>\n",
       "      <td>435840</td>\n",
       "      <td>1580</td>\n",
       "      <td>50724</td>\n",
       "      <td>2.872279e+09</td>\n",
       "      <td>19.200</td>\n",
       "      <td>2.065237e+09</td>\n",
       "      <td>6.833436e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Umbriel</td>\n",
       "      <td>Uranus</td>\n",
       "      <td>265970</td>\n",
       "      <td>1190</td>\n",
       "      <td>50724</td>\n",
       "      <td>2.872279e+09</td>\n",
       "      <td>19.200</td>\n",
       "      <td>8.823472e+08</td>\n",
       "      <td>6.833436e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Nereid</td>\n",
       "      <td>Neptune</td>\n",
       "      <td>5513400</td>\n",
       "      <td>340</td>\n",
       "      <td>49244</td>\n",
       "      <td>4.495416e+09</td>\n",
       "      <td>30.050</td>\n",
       "      <td>2.057953e+07</td>\n",
       "      <td>6.252570e+13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Triton</td>\n",
       "      <td>Neptune</td>\n",
       "      <td>354800</td>\n",
       "      <td>2705</td>\n",
       "      <td>49244</td>\n",
       "      <td>4.495416e+09</td>\n",
       "      <td>30.050</td>\n",
       "      <td>1.036336e+10</td>\n",
       "      <td>6.252570e+13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    moon_name planet_name  moon_planet_distance_km  moon_diameter_km  \\\n",
       "0        Moon       Earth                   384000              3476   \n",
       "1      Deimos        Mars                     9270                20   \n",
       "2      Phobos        Mars                    23460                 8   \n",
       "3    Callisto     Jupiter                  1883000              4800   \n",
       "4      Europa     Jupiter                   670900              3126   \n",
       "5    Ganymede     Jupiter                  1070000              5276   \n",
       "6          Io     Jupiter                   421600              3629   \n",
       "7       Dione      Saturn                   377400              1120   \n",
       "8   Enceladus      Saturn                   238020               498   \n",
       "9    Hyperion      Saturn                  1481000               226   \n",
       "10    Iapetus      Saturn                  3561300              1436   \n",
       "11      Mimas      Saturn                   185520               398   \n",
       "12     Phoebe      Saturn                 12952000               220   \n",
       "13       Rhea      Saturn                   527040              1528   \n",
       "14     Tethys      Saturn                   294660              1060   \n",
       "15      Titan      Saturn                  1221850              5150   \n",
       "16      Ariel      Uranus                   191240              1160   \n",
       "17    Miranda      Uranus                   129780               472   \n",
       "18     Oberon      Uranus                   582600              1526   \n",
       "19    Titania      Uranus                   435840              1580   \n",
       "20    Umbriel      Uranus                   265970              1190   \n",
       "21     Nereid     Neptune                  5513400               340   \n",
       "22     Triton     Neptune                   354800              2705   \n",
       "\n",
       "    planet_diameter_km  planet_sun_distance_km  planet_sun_distance_au  \\\n",
       "0                12742            1.495979e+08                   1.000   \n",
       "1                 6779            2.281368e+08                   1.525   \n",
       "2                 6779            2.281368e+08                   1.525   \n",
       "3               139822            7.786569e+08                   5.205   \n",
       "4               139822            7.786569e+08                   5.205   \n",
       "5               139822            7.786569e+08                   5.205   \n",
       "6               139822            7.786569e+08                   5.205   \n",
       "7               116464            1.427912e+09                   9.545   \n",
       "8               116464            1.427912e+09                   9.545   \n",
       "9               116464            1.427912e+09                   9.545   \n",
       "10              116464            1.427912e+09                   9.545   \n",
       "11              116464            1.427912e+09                   9.545   \n",
       "12              116464            1.427912e+09                   9.545   \n",
       "13              116464            1.427912e+09                   9.545   \n",
       "14              116464            1.427912e+09                   9.545   \n",
       "15              116464            1.427912e+09                   9.545   \n",
       "16               50724            2.872279e+09                  19.200   \n",
       "17               50724            2.872279e+09                  19.200   \n",
       "18               50724            2.872279e+09                  19.200   \n",
       "19               50724            2.872279e+09                  19.200   \n",
       "20               50724            2.872279e+09                  19.200   \n",
       "21               49244            4.495416e+09                  30.050   \n",
       "22               49244            4.495416e+09                  30.050   \n",
       "\n",
       "    moon_volume_km3  planet_volume_km3  \n",
       "0      2.199064e+10       1.083207e+12  \n",
       "1      4.188790e+03       1.631156e+11  \n",
       "2      2.680826e+02       1.631156e+11  \n",
       "3      5.790584e+10       1.431282e+15  \n",
       "4      1.599431e+10       1.431282e+15  \n",
       "5      7.689763e+10       1.431282e+15  \n",
       "6      2.502416e+10       1.431282e+15  \n",
       "7      7.356186e+08       8.271299e+14  \n",
       "8      6.466759e+07       8.271299e+14  \n",
       "9      6.043993e+06       8.271299e+14  \n",
       "10     1.550465e+09       8.271299e+14  \n",
       "11     3.301018e+07       8.271299e+14  \n",
       "12     5.575280e+06       8.271299e+14  \n",
       "13     1.867965e+09       8.271299e+14  \n",
       "14     6.236145e+08       8.271299e+14  \n",
       "15     7.151881e+10       8.271299e+14  \n",
       "16     8.172832e+08       6.833436e+13  \n",
       "17     5.505853e+07       6.833436e+13  \n",
       "18     1.860639e+09       6.833436e+13  \n",
       "19     2.065237e+09       6.833436e+13  \n",
       "20     8.823472e+08       6.833436e+13  \n",
       "21     2.057953e+07       6.252570e+13  \n",
       "22     1.036336e+10       6.252570e+13  "
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import moon and planet data excel files\n",
    "df_moons = pd.read_excel('../data/moons.xlsx')\n",
    "df_planets = pd.read_excel('../data/planets.xlsx')\n",
    "# merge moon and planet data on planet_name\n",
    "df_solar = pd.merge(df_moons, df_planets, left_on='planet_name', right_on='planet_name')\n",
    "# add columns for moon and planet volume\n",
    "df_solar['moon_volume_km3'] = 4/3*np.pi*(df_solar.moon_diameter_km/2)**3\n",
    "df_solar['planet_volume_km3'] = 4/3*np.pi*(df_solar.planet_diameter_km/2)**3\n",
    "# view the dataframe\n",
    "df_solar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Pearson correlation"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "# convert cell to code to learn more about pearsonr (values correlation)\n",
    "scipy.stats.pearsonr?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.39231409401451894, 0.06408634688502726)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pearson correlation (linear regression on values) of diameters\n",
    "pearson_r_diameter, pearson_p_diameter = scipy.stats.pearsonr(df_solar.planet_diameter_km, df_solar.moon_diameter_km)\n",
    "pearson_r_diameter, pearson_p_diameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.5186568153916277, 0.011223179377141783)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pearson correlation (linear regression on values) of volumes\n",
    "pearson_r_volume, pearson_p_volume = scipy.stats.pearsonr(df_solar.planet_volume_km3, df_solar.moon_volume_km3)\n",
    "pearson_r_volume, pearson_p_volume"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Spearman correlation"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "# convert cell to code to learn more about spearmanr (rank-order correlation)\n",
    "scipy.stats.spearmanr?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.453630792978124, 0.029697361455537457)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# spearman correlation (linear regression on ranks) of diameters\n",
    "spearman_r_diameter, spearman_p_diameter = scipy.stats.spearmanr(df_solar.planet_diameter_km, df_solar.moon_diameter_km)\n",
    "spearman_r_diameter, spearman_p_diameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.453630792978124, 0.029697361455537457)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# spearman correlation (linear regression on ranks) of volumes\n",
    "spearman_r_volume, spearman_p_volume = scipy.stats.spearmanr(df_solar.planet_volume_km3, df_solar.moon_volume_km3)\n",
    "spearman_r_volume, spearman_p_volume"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnUAAAFKCAYAAAB7M6mxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xl8VPW9//HXmSUbCYQMCWAMCQRbLFpAuSLKBRWILFUwggtSeu2DKl7FK78rqLjihlqsLRXb+ii1ihSLC6AUkYBKsVAQe6tVoUIgIRAMYbIns51zvr8/hkwSFjMhmcySz/Px0CTfc2bmnQAnn/luR1NKKYQQQgghRFSzhDuAEEIIIYRoPynqhBBCCCFigBR1QgghhBAxQIo6IYQQQogYIEWdEEIIIUQMkKJOCCGEECIGSFEnhBARrq6ujh/96EccPnw4qPMXLFjAO++8E/i6tLSUW265hQkTJnDHHXdQX18fqqhCiDCSok4IISLY559/zs0330xRUVGr55aVlTFnzhw++OCDFu2LFi1ixowZbNy4kQsuuICXXnopRGmFEOEkRZ0QQkSw1atX8+ijj5KRkRFoW7t2Lddddx1Tpkxh4cKFeDweAN577z3Gjh3LxIkTA+f6fD4+/fRTrr76agDy8/PZuHFj534TQohOIUWdEEJEsKeeeorhw4cHvt63bx+rV6/mjTfeYN26dTgcDpYvXw7A7NmzmT59eovHV1ZWkpycjM1mAyA9PZ2ysrLO+waEEJ3GFu4AQgghgrdz506Ki4u54YYbAH9P3A9+8IMznq+UQtO0Fm0nfy2EiA1S1AkhRBQxDIOJEyfy0EMPAVBfX49hGGc8Py0tjdraWgzDwGq1Ul5e3mIoVwgRO2T4VQghosiIESMoKCjA6XSilOKxxx7j1VdfPeP5drud4cOHs2HDBsA/H2/06NGdFVcI0YmkqBNCiCgyaNAg7rrrLn7yk58wefJkTNPktttu+87HPProo6xevZpJkyaxe/du7rnnnk5KK4ToTJpSSoU7hBBCCCGEaB/pqRNCCCGEiAFS1AkhhBBCxICYX/1aWVmPaUb+CLPDkYzTWRfuGEGLprySNXQiLa/FotGzZ7dwx2hh3bp1vPzyywCMHj2a++67r02Pb8s1LNL+PE4m+dpH8rVPNORrr5gv6kxTRUVRB0RNzkbRlFeyhk605e1MLpeLp556io0bN9K9e3duvvlmtm/fzmWXXRb0c7T1Ghbpfx6Sr30kX/tEer72kuFXIYQIEcMwME0Tl8uFruvouk58fHy4YwkhYlTM99QJIUS4JCcn8z//8z9MnDiRxMRE/uM//oOLLrqoTc/R1iGZ9PSUNp3f2SRf+0i+9on0fO0lRZ0QQoTI3r17efvtt/noo49ISUnh3nvvZfny5cyePTvo53A664IeMkpPT6G8vPZs44ac5Gsfydc+0ZCvvWT4VQghQuSTTz5h5MiROBwO4uLiyM/PZ9euXeGOJYSIUVLUCSFEiAwaNIjt27fT0NCAUooPP/yQCy+8MNyxhBAxSoZfhRAiREaNGsXXX39Nfn4+drudCy+8sNVbegkhxNmSok4IIULotttuk0JOCNEppKgTQkSkLQecLNtZwqFqN/16JHDniCzGDnCEO5YQQrTKd2Qz+p5fY9YdwpLcD9v5c7Fnjgv568qcOiFExNlywMkDm/ZxrN5DzwQrx+o9PLBpH1sOOMMdTQghvpPvyGa8uxdgusogLhXTVYZ39wJ8RzaH/LWlqBNCRJxlO0uIs2kk2a1omv9jnE1j2c6ScEcTQojvpO/5NVji0GxJaJqGZksCS5y/PcSkqBNCRJxD1W4SbS0vT4k2CyXV7jAlEkKI4Jh1h8Ca2LLRmuhvDzEp6oQQEadfjwRcutmizaWbZPVICFMiIYQIjiW5Hxiulo2Gy98e6tcO+SsIISLSlgNO8lf9k+G//Tv5q/4ZUfPV7hyRhVdXNPgMlPJ/9OqKO0dkhTuaEEJ8J9v5c8H0onT//pRKbwDT628PMSnqhOiCIn0hwtgBDhbnnUdGt3iq3AYZ3eJZnHeerH4VQkQ8e+Y44oY/hyWxN3irsCT2Jm74c52y+lW2NBGiC2q+EAE48dFg2c6SiCmcxg5wREwWIYRoC3vmuE4p4k4mPXVCdEGyEEEIIWKPFHVCdEGyEEEIIWKPFHVCdEGyEEEIIWJPSIu6H//4x0yePJkpU6YwZcoUPv/8c9577z0mTZpEXl4eK1euDJy7fft2rrnmGvLy8njhhRcC7Xv27CE/P5+rr76aBx98EF3XQxlZiC5BFiIIIUTsCdlCCaUURUVFfPTRR9hs/pcpKytj3rx5vPPOO8TFxXHTTTcxYsQIzj33XBYuXMiKFSvo27cvt99+O1u3bmXMmDHMnz+fJ598kqFDh7Jw4UJWr17NjBkzQhVbiC5DFiIIIURsCVlP3YEDBwD46U9/yrXXXsvrr7/O9u3bufTSS0lNTSUpKYmrr76ajRs38sUXX5CdnU1WVhY2m41rrrmGjRs3cuTIEdxuN0OHDgUgPz+fjRs3hiqyEEIIIUTUCllPXU1NDSNHjuThhx/G5/Mxa9YsJk6cSHp6euCcjIwMvvjiC44dO3ZKe1lZ2Snt6enplJWVtSmHw5Hc/m+mk6Snp4Q7QptEU17JGjrRllcIIWJVyIq6YcOGMWzYsMDX06ZNY/Hixdxxxx2BNqUUmqZhmiaapgXd3hZOZx2mqdrxnXSO9PQUystrwx0jaNGUV7KGTqTltVi0qHojJ4QQHSlkw6+7d+9mx44dga+VUmRmZlJeXh5oKy8vJyMjgz59+gTVfvz4cTIyMkIVWQghhBAiaoWsqKutreW5557D4/FQV1fHmjVr+PnPf86OHTuoqKjA5XKxadMmRo8ezZAhQzh48CDFxcUYhsH69esZPXo0mZmZxMfH89lnnwGwbt06Ro8eHarIQgghRNTzHdmMa/MU6tcOw7V5Cr4jm8MdSXSSkA2/XnnllXz++edMnToV0zSZMWMGF198MfPmzWPWrFn4fD6mTZvGD3/4QwCeeeYZ5s6di8fjYcyYMUyYMAGAJUuW8NBDD1FXV8fgwYOZNWtWqCILIYQQUc13ZDPe3QvAEgdxqZiuMv/XdM69R0V4aUqpyJ9w1g4ypy40oimvZA2dSMsbi3Pq2nINi7Q/j5NJvvYJJp9r8xRMVxmaLSnQpvQGLIm9SRy3Luz5wika8rVXyHrqhBCiPbYccLJsZwmHqt3065HAnSOyZF89IVph1h2CuNSWjdZEf7uIeVLUCSEizpYDTh7YtI84m0bPBCvH6j08sGkfi/OIusLuzTff5PXXXw98ffjwYaZMmcIjjzwSxlQiVlmS+2G6yqBZTx2GC0tyv/CFEp1G7v0qhIg4y3aWEGfTSLJb0TT/xzibxrKdJeGO1mbTp09n3bp1rFu3jiVLluBwOLjrrrvCHUvEKNv5c8H0ovQGlFIovQFMr79dxDwp6oQQEedQtZtEW8vLU6LNQkm1O0yJOsZjjz3GvHnzSEtLC3cUEaPsmeOIG/4clsTe4K3CktibuOGySKKrkOFXIUTE6dcjgWP1HpLs1kCbSzfJ6pEQxlTts337dtxuNxMnTmzT49q68CPS7/Ah+donqHzp18HQ60If5nQvHQs/vygmRZ0QIuLcOSKLBzbtAwwSbRZcuolXV9w5Iivc0c7aG2+8wa233trmx8nq184j+dpH8rVPRxScMvwqhIg4Ywc4WJx3Hhnd4qlyG2R0i2dx3nlRt0iikdfr5dNPP+Wqq64KdxQhRAyTnjohREQaO8ARtUXcyf7973+Tk5NDUlJS6ycLIcRZkp46IYQIsZKSEvr06RPuGEKIGCc9dUIIEWKTJk1i0qRJ4Y4hhIhx0lMnhBBCCBEDpKgTQgghhIgBUtQJIYQQQsQAKeqEEEIIIWKAFHVCCCGEEDFAijohhBBCiBggRZ0QQgghRAyQok4IIYQQIgZIUSeEEEIIEQOkqBNCCCGEiAFS1AkhhBBCxAAp6oQQQgghYoAUdUIIIYQQMUCKOiGEEEKIGCBFnRBCCCFEDJCiTgghhBAiBkhRJ4QQQggRA6SoE0IIIYSIAVLUCSGEEELEACnqhBBCCCFigBR1QgghhBAxQIo6IYQIoQ8//JD8/HwmTpzIk08+Ge44QogYJkWdEEKESElJCY8++igvvfQS7777Ll9//TVbt24NdywhRIyyhTuAEELEqoKCAiZNmkSfPn0AeOGFF4iPjw9zKiFErAp5T92zzz7L/fffD8CePXvIz8/n6quv5sEHH0TXdQBKS0u55ZZbmDBhAnfccQf19fUA1NTUcNtttzFx4kRuueUWysvLQx1XCCE6THFxMYZhMGfOHKZMmcKf/vQnevToEe5YQogYFdKeuh07drBmzRquuOIKAObPn8+TTz7J0KFDWbhwIatXr2bGjBksWrSIGTNmMHnyZJYtW8ZLL73E/Pnz+eUvf8nw4cN5+eWXWbt2LU899RS//OUvQxlZCCE6jGEY7N69mxUrVpCUlMQdd9zBmjVryM/PD/o5HI7kNr1menpKW2N2KsnXPpKvfSI9X3uFrKirqqrihRdeYM6cOezdu5cjR47gdrsZOnQoAPn5+SxdupTp06fz6aefsmzZskD7zJkzmT9/Ph9//DErV64E4Ec/+hGPP/44Pp8Pu90eqthCCNFhevXqxciRI0lLSwNg3LhxfPHFF20q6pzOOkxTBXVuenoK5eW1Z5W1M0i+9pF87RMN+dorZEXdI488wrx58zh69CgAx44dIz09PXA8PT2dsrIyKisrSU5OxmaztWg/+TE2m43k5GQqKiro3bt30Dna+i43nKLtHUQ05ZWsoRNteTvTlVdeyX333UdNTQ3dunVj27ZtjB07NtyxhBAxKiRF3Ztvvknfvn0ZOXIk77zzDgCmaaJpWuAcpRSapgU+Nnfy180fY7G0bRpgW97lhlOkv4M4WTTllayhE2l5LRYtot7IDRkyhNmzZzNjxgx8Ph+XX345119/fbhjCSFCzHdkM/qeX2PWHcKS3A/b+XOxZ44L+euGpKjbsGED5eXlTJkyherqahoaGtA0rcVCh+PHj5ORkUFaWhq1tbUYhoHVaqW8vJyMjAwAMjIyOH78OH369EHXderr60lNTQ1FZCGECIlp06Yxbdq0cMcQQnQS35HNeHcvAEscxKViusr8X/NcyAu7kKx+feWVV1i/fj3r1q3j7rvv5qqrrmLx4sXEx8fz2WefAbBu3TpGjx6N3W5n+PDhbNiwAYC1a9cyevRoAMaMGcPatWsBf6E4fPhwmU8nhBBCiIil7/k1WOLQbElomoZmSwJLnL89xDp18+ElS5awePFiJkyYQENDA7NmzQLg0UcfZfXq1UyaNIndu3dzzz33APA///M//POf/2Ty5Mn86U9/4pFHHunMuEIIIYQQbWLWHQJrYstGa6K/PcRCvvlwfn5+YKXXoEGDeOutt045JzMzkxUrVpzSnpqaym9/+9tQRxRCCCGE6BCW5H6YrjKwJTU1Gi4syf1C/9ohfwUhhBBCiC7Cdv5cML0ovQGlFEpvANPrbw8xKeqEEEIIITqIPXMcccOfw5LYG7xVWBJ7Ezc89IskQO79KoQQQgjRoeyZ4zqliDuZ9NQJIYQQQsQAKeqEEEIIIWKAFHVCiJhhRMHdY4QQIlSkqBNCxASXblJW7wl3DCGECBtZKCGEiEhbDjhZtrOEQ9Vu+vVI4M4RWYwd4DjlPEMpqtw6NW4fdqu8TxVCdF1yBRRCRJwtB5w8sGkfx+o99EywcqzewwOb9rHlgDNwjlJQ49U5XO2myuVDRl6FEF2dFHVCiIizbGcJcTaNJLsVTfN/jLNp/GZXCQqo9RkcrnVRXudFl2pOCCEAGX4VQkSgQ9VueiZYA19bNOibHIeu4HCNC68uhZwQQpxMeuqEEBGnX48EXLoJQKLdSkZyPPW6iU83paATQogzkKJOCBFx7hyRhU9XJNotJMdZOFjZwNFqDzf9sE+4owkhRMRq8/Cry+Vq8XViYmKHhYl0wa7GE0K0z9gBDp6doPHyp4f5+lgdfZLjuX14FiOzUsMdTQghIlbQRd0rr7zCL3/5S7xeLwBKKTRNY8+ePSELF0kaV+PF2bQWq/EW5yGFnRAdSCmo8vjI7pHAE2MHhjtOgMfj4dVXX6Vnz56MGzeOu+++m6+//ppLL72Up556itRUKTiFEOEVdFH3xz/+kT//+c/069cvlHkiVvPVeMCJjwbLdpZIUSdEh1DU+0wqXT48J+bTRZLHHnuMhoYGKioqeO211xg7dizPPPMMa9as4YknnuD5558Pd0QhRBQzdQ8WW3y7niPooi47O5tBgwa168Wi2cmr8QASbRZKqt1hSiRE7PAYigqXF5fXIFKXQfzrX/9i/fr11NXVceWVV3LPPfcAcNdddzFlypQwpxNCRC+FxVeNUW9g6ZHTrmcKuqibOXMm99xzD5dffjl2uz3QPnXq1HYFiBb9eiRwrN4T6KkD/22JsnokhDGVENFNNxWVbh91Hj3iNw9WSmEYBsnJyYGCDsDtdqPrehiTCSGilaY8KLcT3dcA3Xq0+/mCLupWr17Nt99+i9vdsmeqqxR1d47I4oFN+wCDRJsF14mtFe4ckRXuaEJEHQVUeXSqXT6MSK/mThg/fjw333wzq1at4pZbbgFgz549PPDAA0ycODHM6YQQ0eVE75ynAmV23HSToIu6srIy1q9f32EvHG3GDnCwOM8/t66k2k2WrH4V4qy4dZPjDd6InDf3Xe655x4GDx6M1drUW69pGrfeemurw68//vGPqaiowGbzX3Iff/xxhgwZEtK8QojI1KJ3roMFXdSdc845lJWV0bt37w4PES3GDnBIESfEWVJAldsX1fdpHT9+fOBzl8tFdnY22dnZuFyuM27vpJSiqKiIjz76KFDUCSG6JouvqsN755oL+gqjaRrXXHMNF154YYs5db/97W9DEkwIETu8psnxeh8unxHuKO3W1u2dDhw4AMBPf/pTqqqquOGGG5g5c2an5RVChF8oe+eaC7qou/rqq7n66qtDmUUIEXMUNV6DiobomTvXmrZu71RTU8PIkSN5+OGH8fl8zJo1i/79+3P55ZcH9XiHI7lN+dLTU9p0fmeTfO0j+dqns/MppTDdFZjuKrBrQLeQvl7QRd2wYcPIyckJfK2UYvny5aHIJISIAR5D4Wzw4vZF7jYlZ6Ot2zsNGzaMYcOGBb6eNm0aW7duDbqoczrrMIMsiNPTUygvrw06W2eTfO0j+dqns/P5e+eOY/pcrZ8MpPXqxNWvt912GytWrKB3796UlpayYMECXC4Xs2fPbncIIUTs0E1FlUen1h29c+e+S1u3d9q9ezc+n4+RI0cC/jfEMrdOiNim+Sox3ZUo1bkLwoK+svy///f/mD17NjfddBO//vWvmTlzJnfccUcoswkhokjjQohqtx4zQ62n09btnWpra1m6dClvvPEGPp+PNWvWsGjRos6IKoToZI29c0aQvXMdLeiibsKECRiGwX333cfy5csZMWJEKHMJIaKI1zQpr/fhjoGFEK1p6/ZOV155JZ9//jlTp07FNE1mzJjRYjhWCBELFJqvKiy9c821WtTNmTOnxdc9evTgscceIzs7G5DVr0J0dfU+g+P1XvQY7p1r7my2d7rnnnta3IVCCBE7NOVGuZ1h651rrtWi7uQVr6dbAdvQ0EBSUlLHpRJCRDwTxdEaN2V1HlQI6rkdJVWs/PwopbUezkmJ55YhfRmZldrxL9RGsr2TEMIvMnrnmmu1qLvuuutafZJbbrmFNWvWdEggIURkU0CDz6DS5aNbd0vICrrnPynCbtPoEW/F6fLy/CdF/O+onLAXdrK9kxAiknrnmuuQJVgqFFd1IURE0ZWizmtQ6/bhNfz/5kO149LKz49it2kk2vy35PJ/NFj5+dGwF3WyvZMQXVnk9c41Z+mIJ9E0rSOeRggRYTQNPKbJcZePw9VunPXeQEEXSqW1HhKsLS9PCVYLR2s9IX/t1tx2222UlZUBUFpayo9//GPef//9MKcSQoSaptzgKsVwOSOyoIMOKuqEELFF08Clmxyt9VJa7aba1bl3hDgnJR630fKi6TZM+qbEd1qGM2nc3mnlypXk5+dz6aWXsnr16nDHEkKEjELzVWDWlQa9kXC4hHQHzF/96ld88MEHaJrGtGnTuPXWW9m+fTuLFy/G4/EwceJE5s2bB8CePXt48MEHqa+vZ/jw4SxatAibzUZpaSnz58/H6XTSv39/lixZQrduob3NhhBdmc80cbp0Grx6SObLBeOWIX15/pMiwCDBasFtmPh0xS1D+oYnUDOyvZMQXUekzp07k5D11O3atYu///3vvPvuu7z99tusWLGCvXv3snDhQl566SU2bNjAl19+ydatWwGYP38+jzzyCB988AFKqcA730WLFjFjxgw2btzIBRdcwEsvvRSqyEJ0aQqo9OgcqfFQ7wlfQQcwMiuV/x2VgyMxjhqPgSMxLuyLJObMmRP477333gts79TYJoSIJdHTO9dc0D11X331FYMHDz7tsdNtZ3LJJZfw2muvYbPZKCsrwzAMampqyM7OJisrC4BrrrmGjRs3MnDgQNxuN0OHDgUgPz+fpUuXMn36dD799FOWLVsWaJ85cybz589v8zcqhDgzj6E4fuI+rZFiZFZq2BdFNCfbOwnRNWjKjXIdx9DdrZ8cYYIu6u69994zTgZeuXLladvtdjtLly7lD3/4AxMmTODYsWOkp6cHjmdkZFBWVnZKe3p6OmVlZVRWVpKcnBy4T2Jje1s4HMltOj+c0tNTwh2hTaIpr2Q9PbfPoLLBh8urk5SSwNmUI2lpkTMdwmYJ3aIt2d5JiFinTtyztSpiF0K0Juii7vvf/z7vvfceF198cYt3oqmp3/1O+u677+ZnP/sZc+bMoaioqMVKWaUUmqZhmuZp2xs/NtfWlbZOZx1mFOx0n56eQnl5bbhjBC2a8krWU/lMkyq3Tp3HwGzHOGtaWjcqKuo7MFn7xNss4AhfkSnbOwkRnaK5d665oIu6LVu2sHHjxhZtmqaxZ8+e055fWFiI1+vl/PPPJzExkby8PDZu3IjVag2cU15eTkZGBn369KG8vDzQfvz4cTIyMkhLS6O2thbDMLBarYHzhRBnx1CKKrdOjVtvVzEnTk+2dxIi2ig0byWmJ3p755oLeqHEv/71L/bu3dvivzMVdACHDx/moYcewuv14vV62bJlCzfddBMHDx6kuLgYwzBYv349o0ePJjMzk/j4eD777DMA1q1bx+jRo7Hb7QwfPpwNGzYAsHbtWkaPHt3Ob1mIrkhR6zM4XO2myuWTgk4I0eVpyg0NRzDcFTFR0EEbeupM0+SVV15h3759PPTQQ6xcuZLZs2e36HlrbsyYMXzxxRdMnToVq9VKXl4ekydPJi0tjblz5+LxeBgzZgwTJkwAYMmSJTz00EPU1dUxePBgZs2aBcCjjz7K/fffz29+8xv69u3LL37xiw74toXoKhT1PpNqt47bZyClnBBCxFbvXHNBF3XPPfccFRUV/Otf/0IpxbZt2ygvL+ehhx4642Pmzp3L3LlzW7SNHDmSd99995RzBw0axFtvvXVKe2ZmJitWrAg2phCCZvdndet4pZgTQgggdubOnUnQw687duzgmWeeIT4+npSUFP7whz/wt7/9LZTZhBBtpIA6n8GRGjdltR48UtB1KtnORIhIpdAbyv37zsVoQQdtKOpsNhsWS9PpcXFxga1GhBDhpYAar87hGpe/mNNNKeZCxDRNfv/733PfffdRV1fH7373OwzDv7/fmbZ3EkKET+PcOeWpjLnh1pMFXZV973vfY+XKlRiGwYEDB/jjH//I97///VBmE0K0orGYq3H58BpSxnWG5lNRgKCmogghwkGheSswPdUnirnI2VMzVILuqXvwwQf56quvcDqd3HzzzTQ0NMhFTIgwaSzmSqpdHK/zSkHXiZpPRUlOTpapKEJEoKaVrbHfO9dc0D11Bw4c4Omnn27Rtn37di677LIODyUiz5YDTpbtLOFQtZt+PRJYOP57DO8l84c6m6ZBndeg0uXDo3edC1UkkakoQkQwZfrvChHonetaWr0Sff311yiluO+++3j++ecDO6brus5jjz3Gpk2bQh5ShNeWA04e2LSPOJtGzwQrx+o9zF3zJU+OzWXsAEe443UZHlNR2eCjwacj28yFz+mmogwaNCjcsYTo8mJ9ZWswWi3qVq1axd/+9jeOHTvGXXfd1fRAm43x48eHNJyIDMt2lhBn00iy+/ckTLJb8ZiKZTtLpKjrBB11Sy/RMR588EGefvrpwFSUUaNGyVQUIcLpRO+c4amGLtg711yrRd0TTzwBwAsvvMC8efNCHkhEnkPVbnomtNxkOslupaS6674b6gw+06TaY1Art/SKKMnJyadMRQnGs88+S2VlJc8880wIUgnRNWmmC+V2duneueaCnggyb948Nm7cyN69e7n99tvZsmULP/rRj0KZTUSIfj0SOFbvCfTUgX9j26weCWFMFZuUUngMkxqP9My1hVKKb5wNfH28nmG56SF9rX379rFixQqqq6tbtP/qV78642N27NjBmjVruOKKK0KaTYiuw0TzVmB4arp871xzQRd1L7/8Mn/729/49ttv+clPfsKLL75IcXExd955ZyjziQhw54gsHti0DzBItFlw6SaG0rhzRFa4o8UMBdR6dRoqXXxb45Y5c0EqqXZTUOikoNBJcZWb7J6J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JnUrVqzg8ssvZ9y4cbz22mutdt7nn3+eSZMmMWnSJObNmwfAQw89xLhx45gyZQpTpkxhzZo1AKxfv56cnBzGjRvHM888Ez7G1q1bueqqqxg/fjyPPPIItm0DcODAAW644QYmTJjAnXfeSVlZWbPjvemmm5g0aVI4ts2bN9d77aIZ75tvvhmOccqUKQwaNIjHHnss5q5taWkpkydPZt++fRGNo7i4mNtvv52JEydyww03kJ+fD0BlZSUPPPAAEydOZOrUqezYsaNZ8S5evJjJkyeTk5PDQw89RGVlJRC6r0ePHh2+ztX3RaTehzi1U5VprVlunE58a9euZcqUKVxxxRXcddddFBUVAfD2229z8cUXh++t2p+T1oyvqfd4a8a3devWOuXfJZdcwuTJk4HWu37HlxXHxxfNe+9U8UX73jtVfBG991QcOnTokBo9erQ6evSoKisrUzk5OWr79u0tft5PPvlEXXvttcrv96vKykp18803q9WrV6vJkyervLy8Os+tqKhQo0aNUnv27FGBQEDdeuutat26dUoppSZNmqS+/PJLpZRSDz30kHrttdeUUkrdfvvtauXKlUoppZ5//nk1b968ZsXrOI66+OKLVSAQCG+r79rFQrzVvv32WzV27FhVUFAQU9d206ZNavLkyWrAgAFq7969EY3j0UcfVS+99JJSSqm3335b/fSnP1VKKfXyyy+rX/7yl0oppf7+97+r6dOnn3a8O3fuVGPHjlUlJSXKcRw1Y8YM9corryillLrjjjvUP/7xjxOOEan3IRrWmDKttT+HTYmvpKREjRgxQh06dEgppdSzzz6r5syZo5RS6rHHHlMrVqyIeExNiU+ppt/jrR1ftfLycjVp0iS1ceNGpVTrXL/jy4rjRfPeO1V80b73ThWfUpG99+Kypm79+vUMHTqUlJQUvF4v48ePZ9WqVS1+3vT0dGbOnInL5cKyLLKzszlw4AAHDhzg4YcfJicnh+eeew7Hcfjqq6/o1asXmZmZmKZJTk4Oq1atYv/+/fh8PgYOHAjAVVddxapVqwgEAmzcuJHx48fX2d4cO3fuBODWW2/liiuu4NVXX6332sVCvNV+9atfcd9995GQkBBT13bJkiXMnj2bjIwMgIjGsW7dOnJycgCYPHkyf/3rXwkEAqxbt44rrrgCgAsvvJDCwkIOHDhwWvG6XC5mz55N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v//97yMYXfSdbC3Xd955h6lTpzJlyhQefvhh/H4/ACtWrOCyyy5j4sSJdY7RUuvOSlInomLDhg3Ytn3ar7/sssuYNWtWBCM6uaKiIr7++usWP48Qom1pbhkWz37729/SuXNnVq5cydKlS3njjTf48ssvox1WxBy/luv27dtZsmQJb7zxBu+++y5paWnhpPi2225j+vTpJxyjpdadleZXwYYNG5g/fz7dunVj586deDwennzyyTrPWbp0KYsXLyYQCFBUVMR//Md/cP3117Ns2TLWrFmDruvs3r0bj8fDf/3Xf5GdnU1JSQlz587l22+/JRAIMGzYMGbMmMHixYvZsmUL8+bNwzCMBmfxXr16Nc888wwJCQmcc8454e3Lli3jL3/5Cy+99BKbNm3iqaeeorKykvz8fIYPH84TTzzBvn37uOWWWxgxYgRbtmwhGAxy7733snjxYnbu3Mk555zD008/ja7r/OMf/2D+/PlUVFSg6zr33HMPo0eP5qGHHsLn8zFlyhSWLVtGbm4uc+fO5dixYwSDQW666SamTZvGhg0bmDt3Ll6vl7KyMt566y1cLtcpr/0TTzzBtm3beOGFF5gzZw4ej4dvv/2WgoICLr30UlJSUvjoo4/Iz8/n8ccfZ9iwYaf/ixYiTsVqGbZ48WI++ugjFi5cCISW4fvBD37AunXr+PLLL5k3bx4VFRVYlsXPfvazE1YMuOmmm7jhhhuYMGHCCY+///3v88Mf/pD169dTXl7OPffcw6pVq/j222/JyMhg4cKFeL1eduzYcdIyq7FOp4x65JFH6iwPVllZSXJycqPP2dZs2LCB3bt3c8011wAQCAT43ve+1+BrFixYEP75tttui9xqFi01c7JoOz777DN11llnqY0bNyqllHr99dfV1KlT1YMPPqhefvllVVpaqq655hpVWFiolFLqyy+/VAMHDlRKKfXWW2+pQYMGqYMHDyqllHrsscfUjBkzlFJKzZw5U/3v//6vUkop27bV/fffH54p/cYbb1Tvv/9+g3Hl5+erQYMGqe3btyullFq4cKHq169f+Ly33367Ukqp++67T3322WdKKaVKS0vVkCFD1Ndff6327t2r+vXrp9auXauUUuo///M/1ejRo1VJSYny+XxqxIgR6osvvlDHjh1T48aNC8/0fejQITVy5Ei1f/9+tXfv3vB7DQQC6vLLLw+v2lBcXKwmTpyovvzyy/A13Ldv3ymv94MPPqj+8Ic/qEcffVTdfffd4VnCH3zwQTV9+nRVWVmpDh8+rPr16xe+fosWLVI//OEPT3lsIdqjWC3DSkpK1ODBg9Xhw4eVUkrNmzdPPf3006qwsFANGzZMbdq0SSml1LfffqsuuugitWfPnjpl2/HnqP24X79+6n/+53+UUkq99NJL6vzzz1eHDh1SwWBQTZ06VS1fvrzBMqshkSqjfvGLX6hzzjlH3Xfffcq27QbP2RZVrxCxaNEiNWfOnPD20tJSVVRUVOe5Dz74oHrrrbeUUqHfwyuvvBLed/ToUTV06NCIxCQ1dQKAs846K1ydfPXVV/PYY4+F+wskJiaycOFCPv74Y3Jzc/nmm28oLy8Pv3bAgAF06dIFgO9973usWbMGgHXr1vH111+HFyv2+XxNiumLL76gX79+9O3bF4Brr72Wp59++oTnPfnkk/z1r39l4cKF7Ny5E7/fT3l5OSkpKViWxaWXXgpAz549Of/880lKSgJCi8sXFRWxadMm8vPzwwvYA2iaxrZt2zjzzDPD23Jzc9mzZw8PP/xweJvP5+Nf//oX2dnZdO3ale7duzfqvS1atIiCggLeeeedOjV6o0ePxrIs0tPT8Xq9XHLJJeHYjx071thLJ0S7E4tlWFJSEmPHjmX58uX84Ac/YMWKFbz22mt89dVX9OzZk/POOw+AM888kwsuuIC///3v4bVJG2P8+PFAqHzo168fnTt3BqBHjx4UFRU1WGYNHDiwwWNHooyaP38+jz76KPfeey8LFizg3nvvbfR7a0uGDBnCf//3f3PnnXeSmprKr371K3r27MlPfvKTkz6/et3Z888/n/POOy+i685KUicAMAzjhG26HupyeejQIa699lquueYaBg0axIQJE/joo4/Cz/N4POGfNU1DVa085zgOv/3tb8nOzgaguLi4SQUWED4WgGme/Ha98cYb6d+/P5dccgkTJ05k8+bN4ddZllXnnCdbPD4YDJKdnc2bb74Z3paXl0dqaip5eXl1npecnMy7774b3nbkyBGSk5PZtGkTXq+30e/rwgsv5IILLuChhx5i8eLF4biOb7Kt7z0LIeqK1TLsmmuu4Ze//CXZ2dlkZ2eTmZnJ9u3bTziOUgrbtk8oo2qXgYFAoM6+2s+tr2yrr8w6leaUUX/729/CSWZiYiKTJk1i9erVpzxnW3XWWWdxzz33cMstt+A4DmeffTa33357vc83DINnn32WX/3qV/h8PrKyspg3b15EYpGBEgKAb775hm+++QYI9QM5//zz6dChAxAaep2amspdd93FxRdfHC4Mq/tM1Ofiiy9m0aJFKKWorKzkzjvv5NVXXwVCN/WpOhlfeOGFfPfdd+G4as/xU624uJivv/6a+++/n3HjxnHo0CH27NmD4ziNfu8DBw5k9+7dbNy4EYCtW7cyfvx48vLyME2TYDCIUorevXvj8XjCBeTBgweZPHkyW7ZsafS5qp1zzjnceOONJCcn8/zzzzf59UKIumKxDAPCNWILFiwId5gfOHAgO3fu5KuvvgJCHe03btzIRRddVOe1qamp4fLlu+++Y9u2bY26FtWaU2Y1p4x6//33WbBgQfi6vf/++3Wm84gXH374IT169ABg+vTprFy5kvfee4/f/OY3uN3uOs998sknueqqq8KPBw8ezNtvv83777/Piy++GLE+h1INIAA444wzePbZZ9m/fz+pqanMmzcv/EEeMWIES5cuZcKECWiaxkUXXURqaiq7d+9u8JiPPPIIc+fOJScnh0AgwPDhw7ntttsAuPTSS3n66acJBAJMnTr1pK9PTU1l/vz53H///ViWxYUXXnjCczp06MDtt9/O1KlT8Xq9dO7cmQsuuIDdu3eTmZnZqPeemprKc889x7x58/D7/SilmDdvHj169CAYDHLuuecyadIkXnvtNV544QXmzp3Lyy+/jG3b/PSnP2XQoEFs2LChUeeqTdM0nnjiCa688kpGjRrV5NcLIWrEYhlWbfr06bzwwguMGTMGCJU5v/3tb5kzZw4+nw9N0/j1r39N796964wSvfPOO5k5cyYff/wxffr0qTPisjFcLle9ZVZjnG4ZNXPmTGbPnk1OTg4AY8aMifjUUOLkNFW7ble0Sxs2bGDOnDmsXLky2qEIIUSTSRkmRIjU1Imoevnll1mxYsVJ9/3oRz/iiiuuaOWImm/nzp3cd999J93Xu3dvnn322VaOSAjRUtpiGSZlVPySmjohhBBCiDggAyWEEEIIIeKAJHVCCCGEEHFAkjohhBBCiDggSZ0QQgghRByQpE4IIYQQIg78f30UAjBwwWAcAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot linear regressions\n",
    "fig, ax = plt.subplots(1, 2, figsize=(10,5))\n",
    "sns.regplot(x='planet_diameter_km', y='moon_diameter_km', data=df_solar, ax=ax[0])\n",
    "sns.regplot(x='planet_volume_km3', y='moon_volume_km3', data=df_solar, ax=ax[1]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What if we consider the *ratio* of moon size to planet size?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# calculate moon diameters and volumes relative to host planets\n",
    "df_solar['moon_planet_relative_diameter'] = df_solar.moon_diameter_km/df_solar.planet_diameter_km\n",
    "df_solar['moon_planet_relative_volume'] = df_solar.moon_volume_km3/df_solar.planet_volume_km3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot scatter plots\n",
    "fig, ax = plt.subplots(1, 2, figsize=(10,5))\n",
    "\n",
    "ax[0].scatter(df_solar.moon_diameter_km, df_solar.moon_planet_relative_diameter)\n",
    "ax[0].set_xlabel('moon_diameter_km')\n",
    "ax[0].set_ylabel('moon_planet_relative_diameter')\n",
    "\n",
    "ax[1].scatter(df_solar.moon_volume_km3, df_solar.moon_planet_relative_volume)\n",
    "ax[1].set_xlabel('moon_volume_km3')\n",
    "ax[1].set_ylabel('moon_planet_relative_volume')\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA28AAAFVCAYAAAB4sdceAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xl8VNX9//H3ZN8J4ASRTUREW7QgO7JI1QQIMUJBUYRWW0S/ImoLFhC1yirlJ4pI7aotohI3QAsBl+IGCEFlURQBg0AgGQIhG8kkM+f3R2QgBrIxyWyv5+PB48Gde+bez7lJzmPec+5iMcYYAQAAAAC8WpCnCwAAAAAA1IzwBgAAAAA+gPAGAAAAAD6A8AYAAAAAPoDwBgAAAAA+gPAGAAAAAD6A8OYHpk6dqv79+ys1NVWpqalKSUnRddddp7///e81vvfNN9/UhAkTamw3Y8YM7dy5U5L08MMPa8OGDedd908dO3ZMnTp1kiS9//77mjVrltv38VMFBQUaN25cg+8H8CefffaZhg0bVuf3+ctYVRu1rRfAaZ999pmuuuoq1xiRmpqq66+/XnfffbeOHz9e4/s7deqkY8eOVdtm/fr1euaZZyQ13meNc6lNvQ3B4XBowoQJOnr0qJ599lk98cQTjV5DbdTm+Lz33nt67rnnGqki7xDi6QLgHr/5zW/029/+1rWclZWloUOH6pe//KU6dOhw3tvfsGGDbrnlFknS7Nmzz3t7Nbnuuut03XXXNfh+Tpw4oR07djT4fgBU8LexCoB7tW3bVitXrnQtOxwO3XffffrXv/6lP/zhD+e9/R07dujEiROSGu+zhrf517/+pZ49e+qCCy7wdCnn7frrr9eyZcu0a9cuXXHFFZ4up1EQ3ryI0+nUnDlztG3bNhUVFckYo1mzZqlbt2513taRI0dkjFFMTIwk6fPPP9eCBQt08uRJBQUFaeLEiRo0aFCl93z55Zf685//LLvdLpvNpr59+2rOnDlauHChcnJyNHnyZM2fP18LFizQmDFj9PXXX6uoqEiPPPKIJOnDDz/U4sWL9dprr9Vqf5K0bt06LVy4UJGRkercubPr9TfffFNr167VX//613PWdfDgQf3617/WNddco507d8rhcGjSpElavny59u3bp86dO+upp55SUFDQOeuZNm2aSkpKlJqaqjfffFOZmZmaPXu28vLy5HA4NHbsWI0cOVKfffaZZs+eraioKBUVFemNN95QWFhYnX8ugL8oLi7WpEmTtH//fsXFxemJJ55Q+/bt67wdXxirli9frv/97396/vnnJUl79+7Vb37zG61fv15ffPGF5s+fr5MnTyo0NFQPPPCABgwYUOn9Y8eO1ZgxYzR48OAqy1deeaXuuOMObdiwQcXFxZo4caLS09O1e/duJSQk6Pnnn1dUVJT27t171rEJ8Gavv/66XnjhBQUFBalp06Z68skn1bJlyzpto7CwUMeOHdPVV18tqeKMmdmzZ2v37t0qKytTnz599NBDDykk5PRH2uLiYv3pT3/S/v37lZeXp+joaC1YsEAFBQV69dVX5XA4FBsbq3bt2mnt2rWaOnWqRo8erY8//lhhYWFyOBy69tpr9eKLLyohIaHG/RUUFGjgwIFau3atrFarJGnUqFGaOHGirr76aj3++OP65ptvZLFY1L9/f/3+97+v9P4zP/P8dHnq1KmKiIjQ7t27lZubq1/+8peKj4/X//73P9lsNs2aNUt9+vSR3W7XggULtGXLFjkcDv3sZz/TjBkzXGPrKSdPntS///1vvf3221WO9XfffacnnnhCeXl5slgsuvPOO3XTTTdJkv72t7/p9ddfV3R0tLp37673339fH3zwQZVtZGRkaN68eXI6nZKkCRMmKCkpSUVFRZo1a5Y+//xzBQcH6/rrr9eDDz6ozMxMPfHEEyoqKpLNZtPll1+up59+WuHh4ZW2+9prr+mVV16R0+lUfHy8HnnkEdcXfiNHjtTixYsDZwbOwGt8/vnn5r777jMOh8MYY8xf//pXM2HChBrf98c//tH069fP3HjjjeaXv/yl6dmzp7nnnnvMxo0bjTHG5OXlmcTERHPgwAFjjDFHjhwxAwYMMIcOHTJvvPGGueuuu4wxxjz44INm06ZNxhhjCgsLTa9evcyOHTuMMcYMGjTIbN++3RhjzO23327WrFljfvjhB9OrVy9TWlpqjDHm/vvvN2lpadXu70w2m81069bNfPfdd8YYY55//nlz2WWXGWNMreo6cOCAueyyy8x7771njDHm0UcfNYMGDTIFBQWmpKTEXHPNNWbr1q3V1nPgwAHTpUsXY4wxZWVlZujQoWbnzp3GGGPy8/PNkCFDzBdffGE2bdpkLr/8cnPw4MFa/SwBf3bq72Hr1q3GGGNeffVVM3LkyBrf56tjVUFBgenevbvJyckxxhgzf/5889RTT5ljx46ZPn36mC+//NIYY8zu3btNz549zQ8//FCp3lN1nHLm8mWXXWb+/e9/G2MqxvyuXbuaI0eOGIfDYYYPH25WrVpV7dgEeKtdu3aZXr16maysLGOMMS+88IJ55JFHqn3Ppk2bzJVXXmluvPFGM3ToUNO7d29z0003mb/+9a/GbrcbY4yZOnWq+c9//mOMMaa8vNxMnjzZ/O1vfzPGVPw95ebmmjVr1piZM2e6tvvII4+YJ554whhjzKJFi8zjjz9ujKn8WWPMmDGuv8v169eb0aNH17i/Mz300EPmH//4hzHGmD179phrr73WOBwO89BDD5mZM2cap9NpSktLzZ133mn++te/Vqr3zDp+Wtcf//hHM2rUKGO3201OTo657LLLXPW8+OKL5o477jDGGPPss8+aefPmGafTaYwx5v/9v/9nHnvssSp1fvDBB+b22293LZ86HmVlZea6664za9euNcZUjIf9+/c3n3/+ufnoo49MUlKSOXHihHE6nWbatGlm0KBBZ/0Zjhs3zrzzzjvGmIrfgT/96U/GGGPmzJljHnzwQVNeXm5KS0vNmDFjzKZNm8y8efPMihUrjDHG2O12M2zYMJOenl7p+Hz22WfmtttuM8XFxcYYYz7++GMzePBg1z6PHz9uOnfubE6ePHnWmvwNM29epGvXrmrSpIleffVVHThwQJ999pmio6Nr9d5TpyIVFxfrwQcfVFhYmHr16iWp4ltqm82me++919XeYrHo22+/rbSNefPm6aOPPtLzzz+vffv2qbS0VMXFxefcZ5s2bdSpUyd98MEH6tOnjzZt2qTZs2crIyPjnPu76KKLXK9t3bpVl112mS699FJJ0i233KKnnnqqyn7OVVd8fLxCQ0P1y1/+UlLFqRZdu3Z1fcuUkJCgEydOVNv/jh07ul7LzMzUDz/8oOnTp7teKykp0ddff60OHTqoZcuWatWqVTU/BSBwdOrUyfVN+PDhw/WnP/1JBQUFio2NrfZ9vjhWxcTE6IYbbtCqVav0m9/8Rm+//baWLVum7du3q23btvrFL34hSerYsaOuvvpqbd68WRaLpZZHUkpKSpJUMYZddtllatGihSSpdevWOnHiRLVjU5cuXWq9H6Axbdy4Uf369XPNtP3mN7+p1fvOPG3yjTfe0MKFCzVkyBCFhoZKqrhmbceOHXr99dclVfwt/NTgwYPVpk0bLV26VPv379fmzZvVtWvXavc7cuRIvfXWWxo8eLDefPNN3XzzzbXen1Qx0/b444/rt7/9rd544w396le/UlBQkD766CO98sorslgsCgsL0+jRo/Xvf/9bd911V62OhyQNGjRIoaGhslqtioqKUv/+/V3HKi8vz1VnQUGB6zrfsrIyNW/evMq29u3bp7Zt21Z5PTMzU6WlpUpMTJQktWjRQomJifr444+Vn5+vwYMHKy4uTpI0ZswYbdq06ay1DhkyRE888YQ++OAD9e3bV7///e8lVZzSPm3aNAUHBys4OFgvvfSSJKlHjx769NNP9fe//12ZmZnKycmpMp6vX79e+/fv1+jRo12v5efnKy8vT/Hx8YqPj1d4eLgOHTrkltPvvR3hzYusX79es2fP1h133KHrrrtOl1xyiVatWlWnbURFRWn+/PkaOnSoXnzxRd1xxx1yOBzq0KGDXnvtNVe77OxsNWvWrNK0+e23365OnTqpf//+GjJkiLZt2yZjTLX7u/nmm7VixQrl5ubq+uuvV3R0dLX7+6kzt3/mKQRnqq6u0NDQSh+STg3uZ6qunuzs7ErtYmNjK51rf/ToUcXGxurLL79UVFRUtccCCCRBQZXvd2WxWM75N3w2vjZW3Xzzza7TdDp06KA2bdrou+++qxLSjDEqLy+vMhadWV9ZWVmldWe2PdcYdq6xCfBWwcHBlf4+SkpK6vzh+le/+pW2bdum+++/X2lpaQoJCZHT6dQzzzzj2k5+fn6Vv8OXX35ZaWlpGjNmjFJSUhQfH6+DBw9Wu68hQ4Zo3rx52rt3r7Zs2aJ58+ZJUq32J0ndu3dXeXm5tm/frnfeeUfLly93vf/M9k6nU+Xl5ZXea7FYqh0jfnqZxtnGWqfTqenTp2vgwIGSpKKiIpWWllZpZ7FYXKc0nsnhcJxzPAsJCalUX3BwsOv/qamprv/PmjVLo0eP1qBBg/Tpp5/q448/1uLFi5Wenq6QkJBK2z98+LAiIiL0+OOPy+FwaMiQIbr22mt1+PDhKuO50+lUamqqpkyZ4lrOyclRkyZNKtV0Zl3+jLtNepFPP/1UgwYN0m233abOnTvrvffek8PhqPN2mjRpoj/+8Y9atGiRsrOz1aVLF+3fv19btmyRJO3atUtJSUmVgkt+fr527NihyZMnKzExUUeOHNEPP/zg+gMPDg6uMthI0g033KCvvvpKaWlprm+parM/qeLblj179uibb76RVHGO90/VVFdtVFdPSEiIHA6HjDFq3769IiIiXB+QDh8+rGHDhrnuXAfgtG+//Va7du2SVHFNWLdu3RQZGVmnbfjKWHWqrSQ999xzGjVqlOu1ffv2afv27ZIqrhfZsmWLevbsWem9zZo1c40je/bsqTKTWBPGJviiXr16aePGjcrJyZEkvfrqq/rzn/9c5+1MnjxZhw8f1rJlyyRJ/fr104svvihjjOx2u+655x7XLM4pn3zyiYYPH65Ro0apffv2+uCDD1yfp841RoSHhys5OVlTp05VYmKiazyrzf5OGTVqlGbOnKlOnTq5Zhz79eunl156yfX+tLQ09e3bt9L7mjVrpu+++06lpaUqKyvT2rVr63yc+vXrp2XLlslut8vpdOqRRx4569lM7du314EDB6q8fskllygkJETr1q2TVPFF1tq1a9W3b18NHDhQ69atU0FBgSS5ZiElaeXKla5/V155pUaPHq1du3ZpxIgRmjlzpvLz82Wz2dSnTx+99dZbcjqdstvtmjRpkrZs2aJPPvlE9957r4YOHSpJ2rZtW5XPvv369dN///tf1+/SK6+8ol//+teu9QUFBbLb7ZXOmPBnzLx5kdGjR+sPf/iDUlJSVF5ermuuuUbr1q2T0+nUV199pRkzZlT65rU6N954o1577TU9+eSTeuqpp7Ro0SLNnz9fpaWlMsZo/vz5at26tTZv3ixJiouL01133aXhw4crKipKLVq00NVXX639+/erT58+uuGGGzRlyhT96U9/qrSfsLAwDR06VBs2bNBVV10lqWIQOtf+ztSsWTMtWLBAkydPVmhoqHr06FGlH9XV1aZNm1odi+rqcTgcuuqqq5ScnKxly5ZpyZIlmj17tv7xj3+ovLxc999/v7p166bPPvusVvsCAsUll1yixYsX68CBA2revLnrW+odO3b43Vh1yqhRo7RkyRJdf/31rvc/88wzmjlzpkpKSmSxWDR37ly1b99eX3zxhet999xzj6ZOnaoPP/xQl1xyibp3716nYx0WFnbOsQnwVp06ddKUKVP0u9/9TpJktVo1Z84cSdL48eM1evToWt3pMS4uTpMn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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot distributions\n",
    "fig, ax = plt.subplots(1, 3, figsize=(15,5))\n",
    "sns.distplot(df_solar.moon_planet_relative_diameter, rug=True, bins=20, ax=ax[0])\n",
    "sns.distplot(df_solar.moon_planet_relative_volume, hist=False, kde=False, rug=True, bins=20, ax=ax[1])\n",
    "sns.distplot(df_solar.moon_planet_relative_volume, hist=False, kde=False, rug=True, bins=20, ax=ax[2])\n",
    "ax[0].set_title('a. Relative diameter')\n",
    "ax[1].set_title('b. Relative volume')\n",
    "ax[2].set_title('c. Relative volume (log-scale)')\n",
    "ax[2].set_xscale('log');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The relative volume of the Moon to the Earth is ~100x greater than any other moon–planet pair in the Solar System!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Grubbs's test for outliers\n",
    "\n",
    "Grubbs's test is used to detect outliers in a univariate data set assumed to come from a normally distributed population.\n",
    "\n",
    "`outlier_utils` is a library for detecting and removing outliers using Grubbs's test."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Outliers in relative diameter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/luke/miniconda3/envs/python3/lib/python3.7/site-packages/outliers/smirnov_grubbs.py:185: FutureWarning: 'argmax' is deprecated, use 'idxmax' instead. The behavior of 'argmax'\n",
      "will be corrected to return the positional maximum in the future.\n",
      "Use 'series.values.argmax' to get the position of the maximum now.\n",
      "  return data.argmax()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.27279861874117095]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# print outliers from the dataset with grubbs.max_test_outliers\n",
    "outliers_diameter = grubbs.max_test_outliers(df_solar.moon_planet_relative_diameter, alpha=0.05)\n",
    "outliers_diameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>moon_name</th>\n",
       "      <th>planet_name</th>\n",
       "      <th>moon_planet_distance_km</th>\n",
       "      <th>moon_diameter_km</th>\n",
       "      <th>planet_diameter_km</th>\n",
       "      <th>planet_sun_distance_km</th>\n",
       "      <th>planet_sun_distance_au</th>\n",
       "      <th>moon_volume_km3</th>\n",
       "      <th>planet_volume_km3</th>\n",
       "      <th>moon_planet_relative_diameter</th>\n",
       "      <th>moon_planet_relative_volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Moon</td>\n",
       "      <td>Earth</td>\n",
       "      <td>384000</td>\n",
       "      <td>3476</td>\n",
       "      <td>12742</td>\n",
       "      <td>149597870.7</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.199064e+10</td>\n",
       "      <td>1.083207e+12</td>\n",
       "      <td>0.272799</td>\n",
       "      <td>0.020301</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  moon_name planet_name  moon_planet_distance_km  moon_diameter_km  \\\n",
       "0      Moon       Earth                   384000              3476   \n",
       "\n",
       "   planet_diameter_km  planet_sun_distance_km  planet_sun_distance_au  \\\n",
       "0               12742             149597870.7                     1.0   \n",
       "\n",
       "   moon_volume_km3  planet_volume_km3  moon_planet_relative_diameter  \\\n",
       "0     2.199064e+10       1.083207e+12                       0.272799   \n",
       "\n",
       "   moon_planet_relative_volume  \n",
       "0                     0.020301  "
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# which moon does this value correspond to?\n",
    "df_solar[df_solar.moon_planet_relative_diameter == outliers_diameter[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/luke/miniconda3/envs/python3/lib/python3.7/site-packages/outliers/smirnov_grubbs.py:153: FutureWarning: 'argmax' is deprecated, use 'idxmax' instead. The behavior of 'argmax'\n",
      "will be corrected to return the positional maximum in the future.\n",
      "Use 'series.values.argmax' to get the position of the maximum now.\n",
      "  index = relative_values.argmax()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1     0.002950\n",
       "2     0.001180\n",
       "3     0.034329\n",
       "4     0.022357\n",
       "5     0.037734\n",
       "6     0.025954\n",
       "7     0.009617\n",
       "8     0.004276\n",
       "9     0.001941\n",
       "10    0.012330\n",
       "11    0.003417\n",
       "12    0.001889\n",
       "13    0.013120\n",
       "14    0.009102\n",
       "15    0.044220\n",
       "16    0.022869\n",
       "17    0.009305\n",
       "18    0.030084\n",
       "19    0.031149\n",
       "20    0.023460\n",
       "21    0.006904\n",
       "22    0.054931\n",
       "Name: moon_planet_relative_diameter, dtype: float64"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# remove outliers with grubbs.test\n",
    "moon_planet_rel_diam_no_outliers = grubbs.test(df_solar.moon_planet_relative_diameter, alpha=0.05)\n",
    "moon_planet_rel_diam_no_outliers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Outliers in relative volume:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.02030142397437823]"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# print outliers from the dataset with grubbs.max_test_outliers (alpha=0.000005)\n",
    "outliers_volume = grubbs.max_test_outliers(df_solar.moon_planet_relative_volume, alpha=0.000005)\n",
    "outliers_volume"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>moon_name</th>\n",
       "      <th>planet_name</th>\n",
       "      <th>moon_planet_distance_km</th>\n",
       "      <th>moon_diameter_km</th>\n",
       "      <th>planet_diameter_km</th>\n",
       "      <th>planet_sun_distance_km</th>\n",
       "      <th>planet_sun_distance_au</th>\n",
       "      <th>moon_volume_km3</th>\n",
       "      <th>planet_volume_km3</th>\n",
       "      <th>moon_planet_relative_diameter</th>\n",
       "      <th>moon_planet_relative_volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Moon</td>\n",
       "      <td>Earth</td>\n",
       "      <td>384000</td>\n",
       "      <td>3476</td>\n",
       "      <td>12742</td>\n",
       "      <td>149597870.7</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.199064e+10</td>\n",
       "      <td>1.083207e+12</td>\n",
       "      <td>0.272799</td>\n",
       "      <td>0.020301</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  moon_name planet_name  moon_planet_distance_km  moon_diameter_km  \\\n",
       "0      Moon       Earth                   384000              3476   \n",
       "\n",
       "   planet_diameter_km  planet_sun_distance_km  planet_sun_distance_au  \\\n",
       "0               12742             149597870.7                     1.0   \n",
       "\n",
       "   moon_volume_km3  planet_volume_km3  moon_planet_relative_diameter  \\\n",
       "0     2.199064e+10       1.083207e+12                       0.272799   \n",
       "\n",
       "   moon_planet_relative_volume  \n",
       "0                     0.020301  "
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# which moon does this value correspond to?\n",
    "df_solar[df_solar.moon_planet_relative_diameter == outliers_diameter[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1     2.567989e-08\n",
       "2     1.643513e-09\n",
       "3     4.045733e-05\n",
       "4     1.117482e-05\n",
       "5     5.372641e-05\n",
       "6     1.748374e-05\n",
       "7     8.893628e-07\n",
       "8     7.818311e-08\n",
       "9     7.307187e-09\n",
       "10    1.874512e-06\n",
       "11    3.990930e-08\n",
       "12    6.740513e-09\n",
       "13    2.258369e-06\n",
       "14    7.539499e-07\n",
       "15    8.646624e-05\n",
       "16    1.196006e-05\n",
       "17    8.057225e-07\n",
       "18    2.722846e-05\n",
       "19    3.022253e-05\n",
       "20    1.291220e-05\n",
       "21    3.291371e-07\n",
       "22    1.657455e-04\n",
       "Name: moon_planet_relative_volume, dtype: float64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# remove outliers with grubbs.test (alpha=0.000005)\n",
    "moon_planet_rel_vol_no_outliers = grubbs.test(df_solar.moon_planet_relative_volume, alpha=0.000005)\n",
    "moon_planet_rel_vol_no_outliers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"independence\"></a>\n",
    "\n",
    "### Tests of indpendence (of two nominal variables)\n",
    "\n",
    "Source: [Handbook of Biological Statistics](http://www.biostathandbook.com) by John H. McDonald\n",
    "\n",
    "Test | Purpose | Notes | Example\n",
    "----- | ----- | ----- | -----\n",
    "Fisher's exact test | Test hypothesis that proportions are the same in different groups | Use for small sample sizes (less than 1000) | Count the number of live and dead patients after treatment with drug or placebo, test the hypothesis that the proportion of live and dead is the same in the two treatments, total number of samples <1000\n",
    "Chi-square test of independence | Test fit of observed frequencies to expected frequencies | Use for large sample sizes (greater than 1000) | Count the number of live and dead patients after treatment with drug or placebo, test the hypothesis that the proportion of live and dead is the same in the two treatments, total number of samples >1000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Fisher's exact test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use the Fisher's exact test of independence when you have two nominal variables and you want to see whether the proportions of one variable are different depending on the value of the other variable. Use it when the sample size is small."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.fisher_exact?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Parameters\n",
    "* table: array_like of ints.\n",
    "    A 2x2 contingency table.  Elements should be non-negative integers.\n",
    "* alternative: {'two-sided', 'less', 'greater'}, optional.\n",
    "    Which alternative hypothesis to the null hypothesis the test uses.\n",
    "    Default is 'two-sided'.\n",
    "\n",
    "Returns\n",
    "* oddsratio: float.\n",
    "    The odds ratio in the form \"unconditional Maximum Likelihood Estimate\". This is a prior odds ratio and not a posterior estimate.\n",
    "* p_value: float.\n",
    "    p-value, the probability of obtaining a distribution at least as\n",
    "    extreme as the one that was actually observed, assuming that the\n",
    "    null hypothesis is true."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Say we spend a few days counting whales and sharks in the Atlantic and\n",
    "Indian oceans. In the Atlantic ocean we find 8 whales and 1 shark, in the\n",
    "Indian ocean 2 whales and 5 sharks. Then our contingency table is:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>whales</th>\n",
       "      <th>sharks</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Atlantic</th>\n",
       "      <td>8</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Indian</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          whales  sharks\n",
       "Atlantic       8       2\n",
       "Indian         1       5"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f = pd.DataFrame([[8, 2],[1, 5]], \n",
    "                 index=['Atlantic', 'Indian'], \n",
    "                 columns=['whales', 'sharks'])\n",
    "f"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We use this table to find the p-value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20.0, 0.03496503496503495)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "odds_ratio, p_value = scipy.stats.fisher_exact(f, alternative='two-sided')\n",
    "odds_ratio, p_value"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The probability that we would observe this or an even more imbalanced ratio\n",
    "by chance is about 3.5%.  A commonly used significance level is 5%--if we\n",
    "adopt that, we can therefore conclude that our observed imbalance is\n",
    "statistically significant; whales prefer the Atlantic while sharks prefer\n",
    "the Indian Ocean.\n",
    "\n",
    "For tables with large numbers, the (inexact) chi-square test implemented\n",
    "in the function `chi2_contingency` can also be used."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Chi-square test of independence"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use the chi-square test of independence when you have two nominal variables and you want to see whether the proportions of one variable are different for different values of the other variable. Use it when the sample size is large."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.chi2_contingency?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Parameters:\n",
    "* observed: array_like.\n",
    "    The contingency table. The table contains the observed frequencies\n",
    "    (i.e., number of occurrences) in each category.  In the two-dimensional\n",
    "    case, the table is often described as an \"R x C table\".\n",
    "\n",
    "Returns:\n",
    "\n",
    "* chi2: float.\n",
    "    The test statistic.\n",
    "* p: float.\n",
    "    The p-value of the test\n",
    "* dof: int.\n",
    "    Degrees of freedom\n",
    "* expected: ndarray, same shape as `observed`.\n",
    "    The expected frequencies, based on the marginal sums of the table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3.8095238095238093, 0.050961936967763424, 1, array([[5.625, 4.375],\n",
       "        [3.375, 2.625]]))"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi2, p, dof, expected = scipy.stats.chi2_contingency(f)\n",
    "chi2, p, dof, expected"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"anova\"></a>\n",
    "\n",
    "### Analysis of variance\n",
    "\n",
    "#### One-sample *t*-test\n",
    "\n",
    "The one-sample *t*-test is a two-sided test for the null hypothesis that the expected value\n",
    "(mean) of a sample of independent observations `a` is equal to the given\n",
    "population mean, `popmean`."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.ttest_1samp?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Parameters:\n",
    "* a: array_like.\n",
    "    Sample observation\n",
    "* popmean: float or array_like.\n",
    "    Expected value in null hypothesis, if array_like than it must have the\n",
    "    same shape as `a` excluding the axis dimension\n",
    "    \n",
    "Returns:\n",
    "* statistic: float or array.\n",
    "    t-statistic\n",
    "* pvalue: float or array.\n",
    "    Two-tailed p-value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5XJ5DOE4nc5Kk77v3r1bM2fO1F133aWBAweqT58+io2NPeM5wsPD1bVrV3399ddasWKFezihNueryunXpqpZ2k6ePKnx48dryJAhuv766zVhwgR9+eWX7v1q+vkob1ttrm9ZWZk6deqkZcuWuZelpqYqODhYq1ev9ri+aHi8u6OR6Nu3rz777DNlZmZKkpYvX65WrVqpY8eOGjRokN577z0ZY+R0OvXPf/5TAwYMOK/zrVq1Si6XSzk5Ofr888/d70Yot2nTJk2bNk3jxo1TSEiINm/e7J4Cszr9+/fXt99+q0OHDkmSNm7cqDFjxqioqEje3t4qKSk563YOGjRIH330kfLz8yVJCxcu1Jw5czy2iY+PV/fu3XX33Xerb9++Wr9+vbutZzrvxIkT9be//U2FhYW67rrran2+igYOHKhvv/1WKSkpkk59J19FiYmJys/P16xZsxQVFaW4uDg5nU65XK5aX4vaXt9evXopMTFR8fHxkk59F2d0dLQ1XwAAT9xJNxL9+vWTl5eXpk2bJpfLpeDgYC1atEheXl564okn9Nxzz2n06NEqKSnRjTfeqBkzZpzX+YqKinTbbbepoKBAkydPVv/+/ZWcnOxe/+CDD2r+/PlauHChfH19de2119Y4bNG5c2c988wzmj17towx8vHx0euvv67AwEB17txZ/v7+uu2227Rs2bJaT0Z/++23KzU1VRMnTpTD4VBYWJheeuklj21GjRqldevWafjw4XK5XIqMjFROTo7y8/M9zlvxC0yjoqIUGxur++6776zOV1FERIT++Mc/atq0aQoMDFTPnj2r3Oamm27S8OHD5efnpy5duqhz585KTEysdBddnbO5vq+88ormz5+v4uJiGWM0f/58tW/fXt99912tzoX6wyx4qGTq1Knub5QG0LC4k/4XtHXrVr344otVruvXr189t8ZTfn6+7rzzzirXBQYG6oMPPqjnFtXOCy+8oLi4uCrXPfroo7rhhhvquUVoKriTBgCL8eAQACxGSAOAxQhpALAYIQ0AFiOkAcBihDQAWOz/AwXXLu7dhmtaAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.swarmplot(df_solar.moon_planet_relative_diameter);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The population mean of moon-to-planet diameters (excluding our Moon) is approximately 0.018. Our moon is excluded from this population because its relative diameter of 0.273 is an outlier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.018323558187319684"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "moon_planet_rel_diam_no_outliers.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We **cannot** reject the null hypothesis that an expected mean of 0.02 is equal to population mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ttest_1sampResult(statistic=-0.5100116850761494, pvalue=0.6153619635101513)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scipy.stats.ttest_1samp(moon_planet_rel_diam_no_outliers, 0.02)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We **can** reject the null hypothesis that an expected mean of 0.273 (equal to the Moon-Earth diamter ratio) is equal to population mean."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Ttest_1sampResult(statistic=-77.47835937736278, pvalue=2.6973888513820512e-27)"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scipy.stats.ttest_1samp(moon_planet_rel_diam_no_outliers, 0.273)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Two-sample *t*-test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The two-sample *t* test is a two-sided test for the null hypothesis that two independent samples\n",
    "have identical average (expected) values. This test assumes that the populations have identical variances by default."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.ttest_ind?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Parameters\n",
    "* a, b: array_like.\n",
    "    The arrays must have the same shape, except in the dimension\n",
    "    corresponding to `axis` (the first, by default).\n",
    "* axis : int or None, optional\n",
    "    Axis along which to compute test. If None, compute over the whole\n",
    "    arrays, `a`, and `b`.\n",
    "    \n",
    "Returns\n",
    "* statistic: float or array.\n",
    "    The calculated t-statistic.\n",
    "* pvalue: float or array.\n",
    "    The two-tailed p-value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0.49671415, -0.1382643 ,  0.64768854,  1.52302986, -0.23415337,\n",
       "        -0.23413696,  1.57921282,  0.76743473, -0.46947439,  0.54256004,\n",
       "        -0.46341769, -0.46572975,  0.24196227, -1.91328024, -1.72491783,\n",
       "        -0.56228753, -1.01283112,  0.31424733, -0.90802408, -1.4123037 ,\n",
       "         1.46564877, -0.2257763 ,  0.0675282 , -1.42474819, -0.54438272,\n",
       "         0.11092259, -1.15099358,  0.37569802, -0.60063869, -0.29169375,\n",
       "        -0.60170661,  1.85227818, -0.01349722, -1.05771093,  0.82254491,\n",
       "        -1.22084365,  0.2088636 , -1.95967012, -1.32818605,  0.19686124]),\n",
       " array([ 3.10769987,  2.25705242,  1.82652758,  1.54834446, -0.21778299,\n",
       "         0.92023369,  1.30904184,  3.58568334,  2.51542743, -0.64456023,\n",
       "         2.48612595,  1.42237658,  0.984617  ,  2.91751443,  3.54649928,\n",
       "         3.39692018,  0.74117372,  1.53618144,  2.49689515,  3.46331769,\n",
       "         1.28123864,  1.72151154,  0.34049754,  0.20569006,  3.21878873,\n",
       "         4.03436004,  1.89198482,  3.50529935,  2.54245404,  1.03232037,\n",
       "         2.54209341,  4.30705485,  1.94626094,  4.34696548, -1.92961766,\n",
       "         3.23285376,  2.1305706 ,  1.55148897,  2.13764116, -0.98135337,\n",
       "         1.67049217,  2.53566886,  4.21684107,  1.22259467,  0.7872596 ,\n",
       "         1.24736443,  3.37310318,  2.49312666,  1.20535969,  2.76990115]))"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create sample data\n",
    "np.random.seed(42)\n",
    "a = np.random.randn(40)\n",
    "b = 1.5*np.random.randn(50)+2\n",
    "a, b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ttest_ind: t = -8.98889, p = 5.03113e-14\n"
     ]
    }
   ],
   "source": [
    "# two-sample t-test method 1: single function using scipy.stats.ttest_ind\n",
    "t, p = scipy.stats.ttest_ind(a, b, equal_var=False)\n",
    "print(\"ttest_ind: t = %g, p = %g\" % (t, p))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ttest_ind_from_stats: t = -8.98889, p = 5.03113e-14\n"
     ]
    }
   ],
   "source": [
    "# two-sample t-test method 2: from descriptive stats\n",
    "\n",
    "# compute the descriptive statistics of a and b\n",
    "abar = a.mean()\n",
    "avar = a.var(ddof=1)\n",
    "na = a.size\n",
    "adof = na - 1\n",
    "\n",
    "bbar = b.mean()\n",
    "bvar = b.var(ddof=1)\n",
    "nb = b.size\n",
    "bdof = nb - 1\n",
    "\n",
    "# scipy.stats.ttest_ind_from_stats\n",
    "t2, p2 = scipy.stats.ttest_ind_from_stats(abar, np.sqrt(avar), na,\n",
    "                              bbar, np.sqrt(bvar), nb,\n",
    "                              equal_var=False)\n",
    "print(\"ttest_ind_from_stats: t = %g, p = %g\" % (t2, p2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "scipy.special.stdtr: t = -8.98889, p = 5.03113e-14\n"
     ]
    }
   ],
   "source": [
    "# two-sample t-test method 3: use the formulas directly\n",
    "tf = (abar - bbar) / np.sqrt(avar/na + bvar/nb)\n",
    "dof = (avar/na + bvar/nb)**2 / (avar**2/(na**2*adof) + bvar**2/(nb**2*bdof))\n",
    "pf = 2*scipy.special.stdtr(dof, -np.abs(tf))\n",
    "print(\"scipy.special.stdtr: t = %g, p = %g\" % (tf, pf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the distributions\n",
    "sns.distplot(a, bins=10, label='a')\n",
    "sns.distplot(b, bins=10, label='b')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### One-way anova"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The one-way ANOVA tests the null hypothesis that two or more groups have\n",
    "the same population mean.  The test is applied to samples from two or\n",
    "more groups, possibly with differing sizes."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.f_oneway?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Parameters\n",
    "* sample1, sample2, ... : array_like.\n",
    "    The sample measurements for each group.\n",
    "\n",
    "Returns\n",
    "* statistic: float.\n",
    "    The computed F-value of the test.\n",
    "* pvalue: float.\n",
    "    The associated p-value from the F-distribution.\n",
    "\n",
    "Note: The ANOVA test has important assumptions that must be satisfied in order\n",
    "for the associated p-value to be valid.\n",
    "\n",
    "1. The samples are independent.\n",
    "2. Each sample is from a normally distributed population.\n",
    "3. The population standard deviations of the groups are all equal.  This\n",
    "   property is known as homoscedasticity.\n",
    "\n",
    "If these assumptions are not true for a given set of data, it may still be\n",
    "possible to use the Kruskal-Wallis H-test (`scipy.stats.kruskal`) although\n",
    "with some loss of power."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here are some data on a shell measurement (the length of the anterior\n",
    "adductor muscle scar, standardized by dividing by length) in the mussel\n",
    "*Mytilus trossulus* from five locations: Tillamook, Oregon; Newport, Oregon;\n",
    "Petersburg, Alaska; Magadan, Russia; and Tvarminne, Finland, taken from a\n",
    "much larger data set used in McDonald et al. (1991)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "tillamook = [0.0571, 0.0813, 0.0831, 0.0976, 0.0817, 0.0859, 0.0735, 0.0659, 0.0923, 0.0836]\n",
    "newport = [0.0873, 0.0662, 0.0672, 0.0819, 0.0749, 0.0649, 0.0835, 0.0725]\n",
    "petersburg = [0.0974, 0.1352, 0.0817, 0.1016, 0.0968, 0.1064, 0.105]\n",
    "magadan = [0.1033, 0.0915, 0.0781, 0.0685, 0.0677, 0.0697, 0.0764, 0.0689]\n",
    "tvarminne = [0.0703, 0.1026, 0.0956, 0.0973, 0.1039, 0.1045]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(tillamook, label='Tillamook')\n",
    "sns.distplot(newport, label='Newport')\n",
    "sns.distplot(petersburg, label='Petersburg')\n",
    "sns.distplot(magadan, label='Magadan')\n",
    "sns.distplot(tvarminne, label='Tvarminne')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "scipy.stats.f_oneway?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "F_onewayResult(statistic=7.121019471642447, pvalue=0.0002812242314534544)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scipy.stats.f_oneway(tillamook, newport, petersburg, magadan, tvarminne)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We **can** reject the null hypothesis that these five populations have the same mean (one-way anova, $F_{4,34}=7.12, P=2.8\\times10^{-4}$). \n",
    "\n",
    "Complete ANOVA results (see http://www.biostathandbook.com/onewayanova.html):\n",
    "\n",
    "comparison | sum of squares | d.f. | mean square | Fs | P\n",
    "-----|----:|----:|----:|:---:|:---:\n",
    "among groups | 0.00452| 4 | 0.001113 | 7.12 | 2.8e-4\n",
    "within groups | 0.00539 | 34 | 0.000159 | | \n",
    "total | 0.00991 | 38 |  |  |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"machine\"></a>\n",
    "\n",
    "### Machine learning with Scikit-learn\n",
    "\n",
    "Learn more about Scikit-learn and see lots of awesome examples at https://scikit-learn.org.\n",
    "\n",
    "#### Random forests\n",
    "\n",
    "A random forest is a meta estimator that fits a number of decision tree classifiers on various sub-samples of the dataset and uses averaging to improve the predictive accuracy and control over-fitting.\n",
    "\n",
    "Example borrowed from [Chris Albon](https://chrisalbon.com/machine_learning/trees_and_forests/random_forest_classifier_example/) and [Yhat](http://blog.yhat.com/posts/random-forests-in-python.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preliminaries:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the library with the iris dataset\n",
    "from sklearn.datasets import load_iris\n",
    "\n",
    "# Load scikit's random forest classifier library\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# Set random seed\n",
    "np.random.seed(0)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "RandomForestClassifier?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)\n",
       "0                5.1               3.5                1.4               0.2\n",
       "1                4.9               3.0                1.4               0.2\n",
       "2                4.7               3.2                1.3               0.2\n",
       "3                4.6               3.1                1.5               0.2\n",
       "4                5.0               3.6                1.4               0.2"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create an object called iris with the iris data\n",
    "iris = load_iris()\n",
    "\n",
    "# Create a dataframe with the four feature variables\n",
    "df = pd.DataFrame(iris.data, columns=iris.feature_names)\n",
    "\n",
    "# View the top 5 rows\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \\\n",
       "0                5.1               3.5                1.4               0.2   \n",
       "1                4.9               3.0                1.4               0.2   \n",
       "2                4.7               3.2                1.3               0.2   \n",
       "3                4.6               3.1                1.5               0.2   \n",
       "4                5.0               3.6                1.4               0.2   \n",
       "\n",
       "  species  \n",
       "0  setosa  \n",
       "1  setosa  \n",
       "2  setosa  \n",
       "3  setosa  \n",
       "4  setosa  "
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Add a new column with the species names; this is what we are going to try to predict\n",
    "df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)\n",
    "\n",
    "# View the top 5 rows\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create training and test data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "      <th>species</th>\n",
       "      <th>is_train</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \\\n",
       "0                5.1               3.5                1.4               0.2   \n",
       "1                4.9               3.0                1.4               0.2   \n",
       "2                4.7               3.2                1.3               0.2   \n",
       "3                4.6               3.1                1.5               0.2   \n",
       "4                5.0               3.6                1.4               0.2   \n",
       "\n",
       "  species  is_train  \n",
       "0  setosa      True  \n",
       "1  setosa      True  \n",
       "2  setosa      True  \n",
       "3  setosa      True  \n",
       "4  setosa      True  "
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a new column that for each row, generates a random number between 0 and 1, and\n",
    "# if that value is less than or equal to .75, then sets the value of that cell as True\n",
    "# and false otherwise. This is a quick and dirty way of randomly assigning some rows to\n",
    "# be used as the training data and some as the test data.\n",
    "df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75\n",
    "\n",
    "# View the top 5 rows\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True     118\n",
       "False     32\n",
       "Name: is_train, dtype: int64"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.is_train.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create two new dataframes, one with the training rows, one with the test rows\n",
    "train = df[df['is_train']==True]\n",
    "test = df[df['is_train']==False]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of observations in the training data: 118\n",
      "Number of observations in the test data: 32\n"
     ]
    }
   ],
   "source": [
    "# Show the number of observations for the test and training dataframes\n",
    "print('Number of observations in the training data:', len(train))\n",
    "print('Number of observations in the test data:', len(test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preprocess the data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)',\n",
       "       'petal width (cm)'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a list of the feature column's names\n",
    "features = df.columns[:4]\n",
    "\n",
    "# View features\n",
    "features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2])"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# train['species'] contains the actual species names. Before we can use it,\n",
    "# we need to convert each species name into a digit. So, in this case there\n",
    "# are three species, which have been coded as 0, 1, or 2.\n",
    "y = pd.factorize(train['species'])[0]\n",
    "\n",
    "# View target\n",
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create and train the random forest classifier using `RandomForestClassifier` and `clf.fit`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/luke/miniconda3/envs/python3/lib/python3.7/site-packages/sklearn/ensemble/forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "            max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=2,\n",
       "            oob_score=False, random_state=0, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create a random forest Classifier. By convention, clf means 'Classifier'\n",
    "clf = RandomForestClassifier(n_jobs=2, random_state=0)\n",
    "\n",
    "# Train the Classifier to take the training features and learn how they relate\n",
    "# to the training y (the species)\n",
    "clf.fit(train[features], y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we have trained our random forest classifier! The classifier model itself is stored in the `clf` variable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Apply classifier to test data using `clf.predict` and `clf.predict_proba`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 1, 1, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Apply the Classifier we trained to the test data (which, remember, it has never seen before)\n",
    "clf.predict(test[features])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [1. , 0. , 0. ],\n",
       "       [0. , 0.5, 0.5],\n",
       "       [0. , 1. , 0. ],\n",
       "       [0. , 0.9, 0.1],\n",
       "       [0. , 0.2, 0.8],\n",
       "       [0. , 0.3, 0.7],\n",
       "       [0. , 1. , 0. ],\n",
       "       [0. , 0.8, 0.2],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ],\n",
       "       [0. , 0. , 1. ]])"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# View the predicted probabilities of the test data\n",
    "clf.predict_proba(test[features])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Evaluate classifier:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create actual English names for the plants for each predicted plant class\n",
    "preds = iris.target_names[clf.predict(test[features])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa'], dtype='<U10')"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# View the PREDICTED species for the first five observations\n",
    "preds[0:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7     setosa\n",
       "8     setosa\n",
       "10    setosa\n",
       "13    setosa\n",
       "17    setosa\n",
       "Name: species, dtype: category\n",
       "Categories (3, object): [setosa, versicolor, virginica]"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# View the ACTUAL species for the first five observations\n",
    "test['species'].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This looks good for these five observations. Now let's look at all the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = pd.DataFrame()\n",
    "results['predicted'] = preds\n",
    "results['actual'] = test.reset_index()['species']\n",
    "results['comparison'] = (results['predicted'] == results['actual'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>predicted</th>\n",
       "      <th>actual</th>\n",
       "      <th>comparison</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>setosa</td>\n",
       "      <td>setosa</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>versicolor</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>versicolor</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>versicolor</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>virginica</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>virginica</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>versicolor</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>versicolor</td>\n",
       "      <td>versicolor</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>virginica</td>\n",
       "      <td>virginica</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     predicted      actual  comparison\n",
       "0       setosa      setosa        True\n",
       "1       setosa      setosa        True\n",
       "2       setosa      setosa        True\n",
       "3       setosa      setosa        True\n",
       "4       setosa      setosa        True\n",
       "5       setosa      setosa        True\n",
       "6       setosa      setosa        True\n",
       "7       setosa      setosa        True\n",
       "8       setosa      setosa        True\n",
       "9       setosa      setosa        True\n",
       "10      setosa      setosa        True\n",
       "11      setosa      setosa        True\n",
       "12      setosa      setosa        True\n",
       "13  versicolor  versicolor        True\n",
       "14  versicolor  versicolor        True\n",
       "15  versicolor  versicolor        True\n",
       "16   virginica  versicolor       False\n",
       "17   virginica  versicolor       False\n",
       "18  versicolor  versicolor        True\n",
       "19  versicolor  versicolor        True\n",
       "20   virginica   virginica        True\n",
       "21   virginica   virginica        True\n",
       "22   virginica   virginica        True\n",
       "23   virginica   virginica        True\n",
       "24   virginica   virginica        True\n",
       "25   virginica   virginica        True\n",
       "26   virginica   virginica        True\n",
       "27   virginica   virginica        True\n",
       "28   virginica   virginica        True\n",
       "29   virginica   virginica        True\n",
       "30   virginica   virginica        True\n",
       "31   virginica   virginica        True"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a confusion matrix using `pd.crosstab`. Anything on the diagonal was classified correctly and anything off the diagonal was classified incorrectly:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Predicted Species</th>\n",
       "      <th>setosa</th>\n",
       "      <th>versicolor</th>\n",
       "      <th>virginica</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Actual Species</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Predicted Species  setosa  versicolor  virginica\n",
       "Actual Species                                  \n",
       "setosa                 13           0          0\n",
       "versicolor              0           5          2\n",
       "virginica               0           0         12"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create confusion matrix\n",
    "pd.crosstab(test['species'], preds, rownames=['Actual Species'], colnames=['Predicted Species'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "View feature importances in `clf.feature_importances_`. We get a score telling us how important each feature was in classifying. This is one of the most powerful parts of random forests, because we can clearly see that petal width was more important in classification than sepal width:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('sepal length (cm)', 0.11185992930506346),\n",
       " ('sepal width (cm)', 0.016341813006098178),\n",
       " ('petal length (cm)', 0.36439533040889194),\n",
       " ('petal width (cm)', 0.5074029272799464)]"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# View a list of the features and their importance scores\n",
    "list(zip(train[features], clf.feature_importances_))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### K-means clustering\n",
    "\n",
    "Assign data points to N clusters using K-means clustering.\n",
    "\n",
    "Tutorial by [Scott Robinson](https://stackabuse.com/k-means-clustering-with-scikit-learn/)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "KMeans?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a 2-dimensional array and plot it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.array([[5,3],\n",
    "              [10,15],\n",
    "              [15,12],\n",
    "              [24,10],\n",
    "              [30,45],\n",
    "              [85,70],\n",
    "              [71,80],\n",
    "              [60,78],\n",
    "              [55,52],\n",
    "              [80,91]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0], X[:,1], label='True Position');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a K-means cluster with 2 clusters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
       "    n_clusters=2, n_init=10, n_jobs=None, precompute_distances='auto',\n",
       "    random_state=None, tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# In the first line, you create a KMeans object and pass it 2 as value for n_clusters parameter. \n",
    "# Next, you simply have to call the fit method on kmeans and pass the data that you want to cluster.\n",
    "kmeans = KMeans(n_clusters=2)  \n",
    "kmeans.fit(X)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[70.2 74.2]\n",
      " [16.8 17. ]]\n"
     ]
    }
   ],
   "source": [
    "# The first row contains values for the coordinates of the first centroid.\n",
    "# The second row contains values for the coordinates of the other centroid.\n",
    "print(kmeans.cluster_centers_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 1 1 1 1 0 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "# The labels are a one dimensional array of 10 elements corresponding to the clusters assigned to our 10 data points.\n",
    "print(kmeans.labels_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the results colored by cluster labels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0], X[:,1], c=kmeans.labels_, cmap='rainbow');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's what we get with 3 clusters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kmeans = KMeans(n_clusters=3)\n",
    "kmeans.fit(X)\n",
    "plt.scatter(X[:,0], X[:,1], c=kmeans.labels_, cmap='rainbow');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*THE BELOW SECTION IS CURRENTLY NOT RUNNING DUE TO AN INCOMPATIBLE VERSION OF SCIKIT-BIO*\n",
    "\n",
    "<a id=\"microbiome\"></a>\n",
    "\n",
    "### Microbiome analysis with Scikit-bio\n",
    "\n",
    "This last lesson is taken from the documentation for [Scikit-bio](http://scikit-bio.org/docs/latest/). The package `skbio.diversity` provides diversity measures for OTU tables. OTUs are \"operational taxonomic units\"; you can think of them as taxa or species.\n",
    "\n",
    "First, you will have to install Scikit-bio:\n",
    "\n",
    "```\n",
    "conda install -c https://conda.anaconda.org/biocore scikit-bio\n",
    "```"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "from skbio.diversity import alpha_diversity\n",
    "from skbio import TreeNode\n",
    "from io import StringIO\n",
    "from skbio.diversity import beta_diversity\n",
    "from skbio.stats.distance import mantel\n",
    "from skbio.stats.ordination import pcoa\n",
    "from skbio.stats.distance import anosim"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a matrix containing 6 samples (rows) and 7 OTUs (columns):"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "data = [[23, 64, 14, 0, 0, 3, 1],\n",
    "        [0, 3, 35, 42, 0, 12, 1],\n",
    "        [0, 5, 5, 0, 40, 40, 0],\n",
    "        [44, 35, 9, 0, 1, 0, 0],\n",
    "        [0, 2, 8, 0, 35, 45, 1],\n",
    "        [0, 0, 25, 35, 0, 19, 0]]\n",
    "ids = list('ABCDEF')"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "ids"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Alpha-diversity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we’ll compute observed OTUs, an alpha diversity metric, for each sample using the alpha_diversity driver function:"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "scrolled": false
   },
   "source": [
    "adiv_obs_otus = alpha_diversity('observed_otus', data, ids)\n",
    "adiv_obs_otus"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we’ll compute Faith’s PD on the same samples. Since this is a phylogenetic diversity metric, we’ll first create a tree and an ordered list of OTU identifiers."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "tree = TreeNode.read(StringIO(\n",
    "               '(((((OTU1:0.5,OTU2:0.5):0.5,OTU3:1.0):1.0):0.0,'\n",
    "               '(OTU4:0.75,(OTU5:0.5,(OTU6:0.5,OTU7:0.5):0.5):'\n",
    "               '0.5):1.25):0.0)root;'))\n",
    "otu_ids = ['OTU1', 'OTU2', 'OTU3', 'OTU4', 'OTU5', 'OTU6', 'OTU7']\n",
    "adiv_faith_pd = alpha_diversity('faith_pd', data, ids=ids, otu_ids=otu_ids, tree=tree)\n",
    "adiv_faith_pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Beta-diversity"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we’ll compute Bray-Curtis distances, a beta diversity metric, between all pairs of samples. Notice that the data and ids parameters provided to beta_diversity are the same as those provided to alpha_diversity."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "bc_dm = beta_diversity(\"braycurtis\", data, ids)\n",
    "print(bc_dm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we’ll compute weighted UniFrac distances between all pairs of samples. Because weighted UniFrac is a phylogenetic beta diversity metric, we’ll need to pass the skbio.TreeNode and list of OTU ids that we created above. Again, these are the same values that were provided to alpha_diversity."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "wu_dm = beta_diversity(\"weighted_unifrac\", data, ids, tree=tree, otu_ids=otu_ids)\n",
    "print(wu_dm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we’ll do some work with these beta diversity distance matrices. First, we’ll determine if the UniFrac and Bray-Curtis distance matrices are significantly correlated by computing the Mantel correlation between them. Then we’ll determine if the p-value is significant based on an alpha of 0.05."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "r, p_value, n = mantel(wu_dm, bc_dm)\n",
    "print(r)\n",
    "alpha = 0.05\n",
    "print(p_value)\n",
    "print(p_value < alpha)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we’ll perform principal coordinates analysis (PCoA) on our weighted UniFrac distance matrix."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "wu_pc = pcoa(wu_dm)\n",
    "print(wu_pc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "PCoA plots are only really interesting in the context of sample metadata, so let’s define some before we visualize these results."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "sample_md = [\n",
    "    ('A', ['gut', 's1']),\n",
    "    ('B', ['skin', 's1']),\n",
    "    ('C', ['tongue', 's1']),\n",
    "    ('D', ['gut', 's2']),\n",
    "    ('E', ['tongue', 's2']),\n",
    "    ('F', ['skin', 's2'])]\n",
    "sample_md = pd.DataFrame.from_items(sample_md, columns=['body_site', 'subject'], orient='index')\n",
    "sample_md"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let’s plot our PCoA results, coloring each sample by the subject it was taken from:"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "sns.set_style('white')\n",
    "fig = wu_pc.plot(sample_md, 'subject',\n",
    "    axis_labels=('PC 1', 'PC 2', 'PC 3'),\n",
    "    title='Samples colored by subject', cmap='Set1', s=50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We don’t see any clustering/grouping of samples. If we were to instead color the samples by the body site they were taken from, we see that the samples from the same body site (those that are colored the same) appear to be closer to one another in the 3-D space then they are to samples from other body sites."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "fig = wu_pc.plot(sample_md, 'body_site',\n",
    "    axis_labels=('PC 1', 'PC 2', 'PC 3'),\n",
    "    title='Samples colored by body site', cmap='Set1', s=50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ordination techniques, such as PCoA, are useful for exploratory analysis. The next step is to quantify the strength of the grouping/clustering that we see in ordination plots. There are many statistical methods available to accomplish this; many operate on distance matrices. Let’s use ANOSIM to quantify the strength of the clustering we see in the ordination plots above, using our weighted UniFrac distance matrix and sample metadata.\n",
    "\n",
    "First test the grouping of samples by **subject**:"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "results = anosim(wu_dm, sample_md, column='subject', permutations=999)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "results"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "results['test statistic']"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "results['p-value'] < 0.1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The negative value of ANOSIM’s R statistic indicates anti-clustering, but the p-value is insignificant at an alpha of 0.1.\n",
    "\n",
    "Now let’s test the grouping of samples by **body site**:"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "results = anosim(wu_dm, sample_md, column='body_site', permutations=999)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "results"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "results['test statistic']"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "scrolled": true
   },
   "source": [
    "results['p-value'] < 0.1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The R statistic indicates strong separation of samples based on body site. The p-value is significant at an alpha of 0.1."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Correlations with metadata"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also explore the alpha diversity in the context of sample metadata. To do this, let’s add the Observed OTU and Faith PD data to our sample metadata. This is straight-forward beause alpha_diversity returns a Pandas Series object, and we’re representing our sample metadata in a Pandas DataFrame object."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "sample_md['Observed OTUs'] = adiv_obs_otus\n",
    "sample_md['Faith PD'] = adiv_faith_pd\n",
    "sample_md"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can investigate these alpha diversity data in the context of our metadata categories. For example, we can generate boxplots showing Faith PD by body site."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "fig = sample_md.boxplot(column='Faith PD', by='body_site')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also compute Spearman correlations between all pairs of columns in this DataFrame. Since our alpha diversity metrics are the only two numeric columns (and thus the only columns for which Spearman correlation is relevant), this will give us a symmetric 2x2 correlation matrix."
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "sample_md.corr(method=\"spearman\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we would expect, the two measures of alpha diversity (number of observed OTUs and Faith's phylogenetic diversity) are strongly correlated."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### R kernel in Jupyter notebooks\n",
    "\n",
    "Finally, if you want to use R in Jupyter notebooks, installation and instructions are here: <https://irkernel.github.io>."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
